R中匹配行的数量

时间:2016-01-06 12:45:57

标签: r

下面是样本表/数据框。第三个属性(count)将给出相似行的计数(attribute1 + attribute2)

╔════╦═════════════╦═════════════╦══════════════════════════════╗
║ ID ║ Attribute 1 ║ Attribute 2 ║ count(Attribute1+Attribute2) ║
╠════╬═════════════╬═════════════╬══════════════════════════════╣
║  1 ║ A           ║ AA          ║                            3 ║
║  2 ║ B           ║ CC          ║                            1 ║
║  3 ║ C           ║ BB          ║                            2 ║
║  4 ║ A           ║ AA          ║                            3 ║
║  5 ║ C           ║ BB          ║                            2 ║
║  6 ║ D           ║ AA          ║                            1 ║
║  7 ║ B           ║ AA          ║                            1 ║
║  8 ║ C           ║ DD          ║                            1 ║
║  9 ║ A           ║ AB          ║                            1 ║
║ 10 ║ A           ║ AA          ║                            3 ║
╚════╩═════════════╩═════════════╩══════════════════════════════╝

更新:

感谢akrundanas.zuokas寻求帮助。 我期待的最终输出看起来像这样。我从每个计数组中选择50%.ex:对于ID 1,4,10,计数为3.我需要为每个计数组选择2(50%),因此我应该得到(A,AA)两次

 ID    Attribute 1  Attribute 2     count(Attribute1+Attribute2)
        1   A   AA  3
        2   B   CC  1
        3   C   BB  2
        4   A   AA  3
        6   D   AA  1
        7   B   AA  1
        8   C   DD  1
        9   A   AB  1

2 个答案:

答案 0 :(得分:5)

鉴于您的数据位于df

library(data.table)

dt <- as.data.table(df)
dt[, count := .N, by = list(Attribute1, Attribute2)]

答案 1 :(得分:2)

我们可以尝试

library(dplyr)
df1 %>%
     group_by(attribute1, attribute2) %>%
     mutate(Count= n())