我已经根据观察到某个单词在特定日期召开会议的数据集中出现的次数来汇总数据框,如下所示:
var_2
我还有一个单独的数据框,其中包含每个日期的总字数,然后还有一系列其他日期。看起来像这样:
date <- c("2012-05-06", "2013-07-09", "2007-01-03")
word_count <- c("17", "2", "390")
df1 <- data.frame(date, word_count)
我现在想在date <- c("2012-05-06", "2013-07-09", "2007-01-03", "2004-11-03", "1994-12-03")
word_total <- c("17000", "20", "39037", "39558", "58607")
df2 <- data.frame(date, word_count)
中添加另一列,其中合并了df1
中日期的总数,但不包括df2
中以外日期的数据。我还想转换数据框,以便有另一列将word_total除以word_count。
所以输出看起来像这样:
df1
我知道如何在加载date <- c("2012-05-06", "2013-07-09", "2007-01-03")
word_count <- c("17", "2", "390")
word_total <- c("17000", "20", "39037")
word_percentage <- c("0.001", "0.1", "0.00999")
df2 <- data.frame(date, word_count, word_total, word_percentage)`
后使用transform来获取word_percentage
,但是我不知道如何从word_total
中添加相关的列数据。我尝试使用合并和相交无济于事。有任何想法吗?
提前感谢您的帮助!
答案 0 :(得分:2)
如果列是数字列,则只需执行merge
,然后通过除法来创建列
transform(merge(df1, df2, by = c('date')),
word_percentage = round(word_count/word_total, 3))
或使用match
df1$word_percentage <- df1$word_count/df2$word_total[match(df1$date, df2$date)]
df1$word_count <- as.integer(as.character(df1$word_count))
df2$word_total <- as.integer(as.character(df2$word_total))