R根据一列和第二列的重复值创建一列
R create a column based on duplicate values of one column, and a second column
我有两列。一个有多个重复值(A 列)(如 10、10、20、5、10、20 等)。另一个 (col B) 是二进制 (0/1) 变量。如果需要,我需要让 R 首先对第一列 A 进行排序,然后查看所有重复值及其在第二列 B 中的对应值。然后,对于 col A 中的每组重复值,我需要对 col B 中的值求和。因此,如果 col A 中有 5 个 10,那么我需要对与这 5 个 10 中的每一个相关联的 col B 中的 1 求和。
我该怎么做?
谢谢。
您想要聚合:
aggregate(B~A, df, FUN=sum)
df = data.frame(A = c(5,10, 5, 10), B=c(0,1,1,1))
tapply(df$B, df$A, sum)
# 5 10
# 1 2
Neal 的解决方案以更好的方式呈现结果:
aggregate(B~A, df, FUN=sum)
# A B
# 1 5 1
# 2 10 2
我有两列。一个有多个重复值(A 列)(如 10、10、20、5、10、20 等)。另一个 (col B) 是二进制 (0/1) 变量。如果需要,我需要让 R 首先对第一列 A 进行排序,然后查看所有重复值及其在第二列 B 中的对应值。然后,对于 col A 中的每组重复值,我需要对 col B 中的值求和。因此,如果 col A 中有 5 个 10,那么我需要对与这 5 个 10 中的每一个相关联的 col B 中的 1 求和。
我该怎么做?
谢谢。
您想要聚合:
aggregate(B~A, df, FUN=sum)
df = data.frame(A = c(5,10, 5, 10), B=c(0,1,1,1))
tapply(df$B, df$A, sum)
# 5 10
# 1 2
Neal 的解决方案以更好的方式呈现结果:
aggregate(B~A, df, FUN=sum)
# A B
# 1 5 1
# 2 10 2