匹配R中的列并为它们添加频率

时间:2016-08-04 04:56:34

标签: r

我需要将col1中的值与col 2和col3匹配,如果它们匹配,我需要添加它们的频率。它应显示freq1 freq2和freq3中唯一值的计数。

    col1    freq1   col2    freq2   col3    freq3
    apple   3   grapes  4   apple   1
    grapes  5   apple   2   orange  2
    orange  4   banana  5   grapes  2
    guava   3   orange  6   banana  7

I need my output like this
apple   6
grapes  11
orange  12
guava   3
banana  12

我是初学者。如何在R中编码。

2 个答案:

答案 0 :(得分:0)

我们可以使用melt中的data.tablepatterns参数中指定的measure将'wide'格式转换为'long'格式,然后按'col'分组',我们得到'{1}}'freq'列

sum

如果它是交替'col','freq',列,我们可以分别library(data.table) melt(setDT(df1), measure = patterns("^col", "^freq"), value.name = c("col", "freq"))[,.(freq = sum(freq)) , by = col] # col freq #1: apple 6 #2: grapes 11 #3: orange 12 #4: guava 3 #5: banana 12 'col'列和'freq'列的子集来创建data.frame(使用{{1} }为子集化列进行回收),然后使用unlist中的c(TRUE, FALSE)来获取按{col'分组的aggregate

base R

答案 1 :(得分:0)

我认为对新手最容易理解的是创建3个独立的数据帧(我假设你的数据帧名称是df):

df <- rbind(df1, df2, df3)

然后按行绑定所有数据帧:

library(dplyr)
df <- df %>%
       group_by(fruit)%>%
       summarise(sum(freq))

最后一组使用dplyr库通过水果和和频率。

to_barplot