返回数据框中列中特定值的行号

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 票其他版主的投票,他们认为一个简单的问题需要用解释来回答,考虑到源代码是自记录的;否则,毫无根据地要求改进的版主自己希望解释他的行为

以上是关于返回数据框中列中特定值的行号的主要内容,如果未能解决你的问题,请参考以下文章

什么函数允许我根据R中列中的值从数据框中的列中提取数据?

重命名数据框中列中的字符变量 - R

动态填充pyspark数据框中列中的行

计算数据框中列中的组

从熊猫数据框中提取在特定列中具有特定值的所有行

做某事。如果在熊猫数据框中列中的值等于 1