如何基于索引从R数据帧列中提取特定值?

有时我们想弄清楚哪个值位于R数据框列中的某个位置,这有助于我们理解数据收集或数据模拟过程。例如,如果我们有一个包含x,y和z列的数据帧df,每个列具有5000个值,那么我们可以使用df $x [[253]]查找哪些值位于数据帧df列x的第253行。

示例

请看以下数据帧-

set.seed(987)
x<-rnorm(20,521,30.7)
y<-rnorm(20,20,4.05)
z<-rnorm(20,31,1)
a<-rpois(20,8)
b<-rpois(20,10)
c<-rpois(20,2)
df<-data.frame(x,y,z,a,b,c)
df

输出结果

   x    y     z      a     b    c
1 519.2497 26.62916 31.48431 14 18 0
2 529.2888 16.46887 32.70400 5 5 1
3 547.8463 13.71248 29.73358 10 11 2
4 515.1564 22.82227 30.12065 6 5 5
5 554.7914 20.28892 32.52483 7 2 4
6 493.5616 15.45613 31.23513 14 10 3
7 491.6825 22.32123 30.81875 4 9 4
8 494.7252 18.33388 32.50834 8 13 1
9 486.8303 13.96303 30.71686 5 10 2
10 481.4361 18.60518 32.32576 13 9 3
11 544.2612 19.79058 32.56325 7 8 1
12 494.0999 23.56244 30.83515 4 14 3
13 574.9847 27.61496 29.30917 9 6 0
14 520.7027 27.62166 29.93995 10 12 0
15 507.2346 22.38830 31.16826 7 15 0
16 517.3553 22.60314 31.76175 6 9 2
17 507.0164 18.61279 31.86548 10 10 3
18 484.6791 24.74147 31.88115 5 6 5
19 507.0228 25.21739 32.09461 5 4 0
20 552.1552 16.49131 31.39587 5 7 2

使用索引从列x中提取值-

df$x[[1]]
[1] 519.2497
df$x[[5]]
[1] 554.7914
df$x[[6]]
[1] 493.5616
df$x[[7]]
[1] 491.6825
df$x[[12]]
[1] 494.0999
df$x[[15]]
[1] 507.2346
df$x[[19]]
[1] 507.0228
df$x[[20]]
[1] 552.1552

使用索引从y列中提取值-

df$y[[19]]
[1] 25.21739
df$y[[1]]
[1] 26.62916
df$y[[4]]
[1] 22.82227
df$y[[3]]
[1] 13.71248
df$y[[5]]
[1] 20.28892
df$y[[7]]
[1] 22.32123
df$y[[10]]
[1] 18.60518
df$y[[9]]
[1] 13.96303
df$y[[13]]
[1] 27.61496
df$y[[14]]
[1] 27.62166
df$y[[18]]
[1] 24.74147

使用索引从z列中提取值:

df$z[[2]]
[1] 32.704
df$z[[5]]
[1] 32.52483
df$z[[10]]
[1] 32.32576
df$z[[15]]
[1] 31.16826
df$z[[20]]
[1] 31.39587
df$z[[17]]
[1] 31.86548

使用索引从列a中提取值-

df$a[[20]]
[1] 5
df$a[[1]]
[1] 14
df$a[[10]]
[1] 13
df$a[[12]]
[1] 4
df$a[[5]]
[1] 7
df$a[[13]]
[1] 9
df$a[[17]]
[1] 10
df$a[[18]]
[1] 5
df$a[[19]]
[1] 5

使用索引从b列中提取值-

df$b[[1]]
[1] 18
df$b[[5]]
[1] 2
df$b[[10]]
[1] 9
df$b[[15]]
[1] 15
df$b[[20]]
[1] 7

使用索引从列c中提取值-

df$c[[3]]
[1] 2
df$c[[6]]
[1] 3
df$c[[9]]
[1] 2
df$c[[12]]
[1] 3
df$c[[15]]
[1] 0
df$c[[18]]
[1] 5