返回数据框中列中特定值的行号
Posted
技术标签:
【中文标题】返回数据框中列中特定值的行号【英文标题】:Return row number(s) for a particular value in a column in a dataframe 【发布时间】:2014-01-27 14:08:38 【问题描述】:我有一个数据框(df)
,我想知道如何在同一数据框的4th column (height_chad1)
中返回特定值(2585)
的行号?
我试过了:
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'
是否有等效的代码行适用于数据帧而不是类似矩阵的对象?
任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:使用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
正如Matt Weller 指出的,您可以使用length
函数。
plyr
中的 count
函数可用于返回每个唯一列值的计数。
【讨论】:
如果想找到值 2585 在同一列中出现的次数,我会使用与函数计数类似的构造吗?计数(mydata_2$height_chad1 == 2585) 您可以在 Seth 提供的答案结果中使用length
,或者在您的建议中使用 sum
而不是 count
。您是否按照您的建议尝试过count
功能?这是一个简单的测试,没有破坏任何东西的危险......!
不错的解决方案,但是如果您不只是想查看 x 列,如果您想返回数据框中每个单元格等于 3 的行和列值怎么办?
@par Try df[which(df$x == 3),]
这将返回 [rows,colums]。留一个空白表示全部。
我正在寻找如何对列进行选择性处理,并使用 data.frame 的行 ID 获得结果。在我的情况下,我找到了一个答案,从@SethB 的答案中只得到了四列。 df[其中(df$x == 3),1:4]【参考方案2】:
which(df==my.val, arr.ind=TRUE)
【讨论】:
虽然这可能是正确的答案,但最好添加一些对您的代码作用的解释...您能添加一些吗? 我认为我们需要至少 2 票其他版主的投票,他们认为一个简单的问题需要用解释来回答,考虑到源代码是自记录的;否则,毫无根据地要求改进的版主自己希望解释他的行为以上是关于返回数据框中列中特定值的行号的主要内容,如果未能解决你的问题,请参考以下文章