引用R中的行号

时间:2013-07-18 19:53:50

标签: r row

如何参考观察的行号?例如,如果您有一个名为“{”的data.frame,并希望创建一个等于每个观察行号的变量data$rownumber,那么如何在不使用循环的情况下进行此操作?

4 个答案:

答案 0 :(得分:21)

创建rownames时,这些内容默认显示为data.frame

R> df = data.frame('a' = rnorm(10), 'b' = runif(10), 'c' = letters[1:10])
R> df
            a          b c
1   0.3336944 0.39746731 a
2  -0.2334404 0.12242856 b
3   1.4886706 0.07984085 c
4  -1.4853724 0.83163342 d
5   0.7291344 0.10981827 e
6   0.1786753 0.47401690 f
7  -0.9173701 0.73992239 g
8   0.7805941 0.91925413 h
9   0.2469860 0.87979229 i
10  1.2810961 0.53289335 j

您可以通过rownames命令访问它们。

R> rownames(df)
 [1] "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"  "10"

如果您需要将它们作为数字,只需添加as.numeric即可强制转换为数字,如as.numeric(rownames(df))中所示。

您不需要添加它们,就好像您知道要查找的内容(例如项目df$c == 'i'),您可以使用which命令:

R> which(df$c =='i')
[1] 9

或者如果你不知道专栏

R> which(df == 'i', arr.ind=T)
     row col
[1,]   9   3

您可以使用df[9, 'c']df$c[9]访问该元素。

如果您想添加它们,可以使用df$rownumber <- as.numeric(rownames(df)),但这可能不如df$rownumber <- 1:nrow(df)强大,因为有些情况下您可能已经分配到rownames,因此他们将不再是默认索引号(即使您分配给rownames,哪个命令将继续返回索引号)。

答案 1 :(得分:7)

简单地说:

data$rownumber = 1:nrow(Data)

答案 2 :(得分:3)

也许对于数据框而言,最简单实用的解决方案之一是:

data = dplyr :: mutate(data,rownum = row_number())

答案 3 :(得分:1)

这可能是最简单的方法:

data$rownumber = 1:dim(data)[1]

值得注意的是,如果要按行索引选择行,可以使用简单的括号表示法执行此操作

data[3,]

vs.

data[data$rownumber==3,]

所以我不确定这个新专栏的成就。