У меня есть фрейм данных (df), и мне было интересно, как вернуть номер (а) строки для определенного значения (2585) в 4th column (height_chad1) того же фрейма данных?

Я пытался:

row(mydata_2$height_chad1, 2585)

И я получаю следующую ошибку:

Error in factor(.Internal(row(dim(x))), labels = labs) : 
  a matrix-like object is required as argument to 'row'

Есть ли эквивалентная строка кода, которая работает для фреймов данных вместо матричных объектов?

Любая помощь была бы признательна.

52
pkg77x7 9 Янв 2014 в 10:36

2 ответа

Лучший ответ

Используйте which(mydata_2$height_chad1 == 2585)

Краткий пример

df <- data.frame(x = c(1,1,2,3,4,5,6,3),
                 y = c(5,4,6,7,8,3,2,4))
df
  x y
1 1 5
2 1 4
3 2 6
4 3 7
5 4 8
6 5 3
7 6 2
8 3 4

which(df$x == 3)
[1] 4 8

length(which(df$x == 3))
[1] 2

count(df, vars = "x")
  x freq
1 1    2
2 2    1
3 3    2
4 4    1
5 5    1
6 6    1

df[which(df$x == 3),]
  x y
4 3 7
8 3 4

Как отметил Мэтт Веллер, вы можете использовать функцию length. Функция count в plyr может использоваться для возврата количества каждого уникального значения столбца.

87
Community 23 Май 2017 в 12:26

which(df==my.val, arr.ind=TRUE)

1
ivan866 6 Окт 2020 в 22:13