Как я могу ссылаться на номер строки наблюдения? Например, если у вас есть data.frame
, называемый "data", и вы хотите создать переменную data$rownumber
, равную каждому номеру строки наблюдения, как бы вы это сделали, не используя цикл?
Ссылка на номер строки в R
Ответ 1
Они представлены по умолчанию как 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'
, вы можете использовать команду:
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
).
Ответ 2
Просто:
data$rownumber = 1:nrow(Data)
Ответ 3
Это, наверное, самый простой способ:
data$rownumber = 1:dim(data)[1]
Возможно, стоит отметить, что если вы хотите выбрать строку по индексу строки, вы можете сделать это с помощью простой записи в виде скобок
data[3,]
vs.
data[data$rownumber==3,]
Итак, я не совсем уверен, что делает этот новый столбец.