How do I reference the row number of an observation? For example, if you have a data.frame
called "data" and want to create a variable data$rownumber
equal to each observation's row number, how would you do it without using a loop?
问问题
122587 次
4 回答
28
这些默认情况下存在,就像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))
.
您无需添加它们,就好像您知道要查找的内容一样(例如 item 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
因此它们将不再是默认索引号(即使您使用 which 命令将继续返回索引号做分配给rownames
)。
于 2013-07-18T20:17:13.140 回答
13
简单地:
data$rownumber = 1:nrow(Data)
于 2013-07-18T20:04:34.310 回答
5
也许对于数据框,最简单和最实用的解决方案之一是:
data = dplyr::mutate(data, rownum=row_number())
于 2020-04-17T19:47:52.900 回答
3
这可能是最简单的方法:
data$rownumber = 1:dim(data)[1]
可能值得注意的是,如果您想通过行索引选择一行,您可以使用简单的括号表示法来执行此操作
data[3,]
vs.
data[data$rownumber==3,]
所以我不太确定这个新专栏能完成什么。
于 2013-07-18T19:58:01.940 回答