r - R计数列值
问题描述
对 R 的帮助:我需要按列分组并计算一组列中值的出现次数。
这是我的数据框
ID Ob1 Ob2 Ob3 Ob4
3792 0 0 0 1
3792 0 0 -1 0
3792 1 -2 -1 0
3792 2 -2 -1 0
8060 -1 0 -2 2
8060 -1 0 -3 0
8060 0 0 0 0
13098 0 0 0 0
13098 -1 0 -1 0
13098 0 0 0 0
我想对 ID 进行分组并计算 Ob1、Ob2、Ob3、Ob4 中的数字值。所以我的结果应该如下所示;
Group -3 -2 -1 0 1 2
3792 2 3 8 2 1
8060 1 1 2 7 1
13098 2 10
我试过了
table(unlist(df))
但我丢失了 groupby 信息。我在下面
-3 -2 -1 0 1 2 46 3792 8060 13098
1 3 7 25 2 2 10 4 3 3
解决方案
使用table
来自base R
table(data.frame(col1 = df1$ID, col2 = unlist(df1[-1])))
# col2
#col1 -3 -2 -1 0 1 2
# 3792 0 2 3 8 2 1
# 8060 1 1 2 7 0 1
# 13098 0 0 2 10 0 0
也无需创建data.frame
. 完成上述操作是为了使长度相同(因为在 中有回收data.frame
)并且table
需要参数具有相同的长度。所以,上面的一个变体也应该能很好地工作
table(rep(df1$ID, ncol(df1)-1), unlist(df1[-1]))
如果我们正在unlist
读取整个数据集,它只是一个单一的vector
,相反我们需要两个向量,一个用于第一列“ID”,第二个用于除“ID”之外的所有其他列
数据
df1 <- structure(list(ID = c(3792L, 3792L, 3792L, 3792L, 8060L, 8060L,
8060L, 13098L, 13098L, 13098L), Ob1 = c(0L, 0L, 1L, 2L, -1L,
-1L, 0L, 0L, -1L, 0L), Ob2 = c(0L, 0L, -2L, -2L, 0L, 0L, 0L,
0L, 0L, 0L), Ob3 = c(0L, -1L, -1L, -1L, -2L, -3L, 0L, 0L, -1L,
0L), Ob4 = c(1L, 0L, 0L, 0L, 2L, 0L, 0L, 0L, 0L, 0L)),
class = "data.frame", row.names = c(NA,
-10L))
推荐阅读
- django - ValueError: Unable to configure handler 'file': [Errno 2] No such file or directory: while using cross-platform scripts
- jquery - 在页面上找到特定文本时更改正文背景颜色
- r - 使用 gganimate 制作的动画中的故障
- python - 不和谐嵌入不想发送
- java - Java swing 游戏 JPanel 布局辅助
- docker-compose - 如何抑制柏树无头铬原木?
- php - 在特定产品的 WooCommerce 购物车页面中的购物车项目名称后添加产品 ID
- javascript - 如何搜索任何匹配的未链接 URL 并将其替换为 href?
- python - 从三个列表制作字典并将它们附加到一个列表
- java - java - 如何使用java中的另一个类更改一个类中变量的值?