我需要将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中编码。
答案 0 :(得分:0)
我们可以使用melt
中的data.table
与patterns
参数中指定的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