【问题标题】:How to evaluate rows based on column values?如何根据列值评估行?
【发布时间】:2013-06-26 15:41:55
【问题描述】:

我有一张如下表:

ID  period 1 period 2 period 3 period 4
A     4       2        25       42
B     3       56        2       45
C     16      1        34       67
D     56      2         8       48

我想在 R 中检查每行中有多少次(列)我得到低于 10 的值。例如,在 A 行中,我有两个低于 10 的值。 有什么想法???

我使用了分位数并得到以下结果:

分位数(v[,2:5],na.rm=TRUE) 0% 25% 50% 75% 100% 1.00 2.75 20.50 45.75 67.00

但这并不是我所需要的;我想知道低于 10 的值的百分比(或计数)。我尝试使用以下方法,但也没有用:

限制 [1] 10 v$tot

实际数据集区域的前几行如下:

    id    1   2   3   4    5   6   7   8   9  10  11  12  13  14  15  16  17
1 xxxlll  61  36 277 462  211 182  45  41 128 174 179  87  18 NaN NaN NaN NaN
2 ccvvbb 281 340 592 455  496 348 422 491 408 548 596 611 570 580 530 602 614
3 ddffgr 587 964 895 866 1120 725 547  90 NaN NaN NaN NaN NaN NaN NaN NaN NaN
4 rrteww 257 331 320 411  442 316 334 403 355 444 522 661 508 499 520 413 494
5 oiertw 261 NaN NaN NaN  NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

【问题讨论】:

  • 这是一个相当基本的 R 问题。你能分享你尝试过的东西,你看过的地方以及为什么/如何没有奏效吗?现在听起来您希望我们为您编写代码。也请尝试提出您的问题reproducible
  • 是....挣扎了好久才发现。对不起!
  • 继续在此处发布您的答案并为后代接受。
  • 这是一个很好的子集介绍(LINK)
  • 我是这个站点的新手,无法理解编写代码的正确方法,也找不到明确的指示或询问谁。有人可以给我一个提示吗?

标签: r operation


【解决方案1】:

如果 OP 没有,我想我会添加一个答案,但在这种情况下,我会使用 rowSums 和逻辑比较...

# '-1' drops the ID column
x <- rowSums( df[ ,-1 ] < 10 )
names(x) <- df$ID
x
#A B C D 
#2 2 1 2 

【讨论】:

  • 感谢您的建议。它适用于示例数据集,但不适用于我的实际数据集。我猜是因为我有各种 NA 值 x 会导致每个 ID 的 NA 列表。
  • 只需添加na.rm = TRUE ... x &lt;- rowSums( df[ ,-1 ] &lt; 10 , na.rm = TRUE )。请阅读文档。
猜你喜欢
  • 1970-01-01
  • 2020-04-15
  • 1970-01-01
  • 2018-12-27
  • 2017-04-24
  • 1970-01-01
  • 2016-04-20
  • 2012-01-12
  • 1970-01-01
相关资源
最近更新 更多