【问题标题】:extracting value based on another column基于另一列提取值
【发布时间】:2021-06-10 02:22:43
【问题描述】:

我有一个吐出矩阵的函数,比如:

      x freq
1 FALSE   40
2  TRUE    6

但是当没有 FALSE 值时,我得到

     x freq
1 TRUE   46

我想提取 x=TRUE 时的频率值。 如果总是同时存在 FALSE 和 TRUE 值,我可以这样做

> matrix [2,2]
[1] 6

但我希望能够提取 TRUE 值,无论是否存在 FALSE 值。有谁知道我该怎么做?提前致谢!

【问题讨论】:

  • 您所显示的不是matrix,而是data.frame,因为R 中的matrix 只能是单一类型。另外,请花一些时间阅读一些在线提供的 R 常见问题解答和介绍...yourdata$freq[yourdata$x]
  • 我看到您没有接受任何问题的答案。如果您希望对此以及未来的问题给予更多关注,我建议您返回并确认人们之前给出的答案。

标签: r extract


【解决方案1】:

正如@Justin 所说,您可能正在使用data.frame 而不是matrix。一切都好。使用上面的示例,如果您的 data.frame 如下所示:

df <- data.frame(x=c(FALSE,TRUE), freq=c(40, 6))
> df
      x freq
1 FALSE   40
2  TRUE    6

无论是否有 FALSE 值,以下内容都会为您提供所需的内容。

df$freq[df$x==TRUE]
[1] 6

编辑:正如@DWin 指出的那样,您可以通过使用df$x 是合乎逻辑的事实来进一步简化:

> df$freq[df$x]
[1] 6
> df$freq[!df$x]
[1] 40

例如:

> df2 <- data.frame(x=TRUE, freq=46)
> df2
     x freq
1 TRUE   46

仍然有效:

> df2$freq[df2$x==TRUE]
[1] 46

【讨论】:

  • 非常有帮助。感谢所有回复的人。
  • 如果 df$x 是合乎逻辑的,那么 ==TRUE 是多余的。
猜你喜欢
  • 1970-01-01
  • 2021-09-01
  • 2022-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多