根据现有数据框有条件地将数据框合并为一个数据框

Merging data frame conditionally into one data frame on the basis of it existing

我的数据框仅根据特定条件存在,因此有时并非所有可能的数据框都存在。它基于数据集中的一列中有多少个唯一值。我希望拥有可以随时间更新的通用代码,以便随着时间的推移存在更多唯一值,我可以将它们添加到一个综合数据框中。以下代码创建包含唯一值的对象。

x <- month(data$created_at)
y <- unique(month(data$created_at))

这是根据 y

的值创建数据框的代码
if (any(y == 4)) {
april<-data.frame(get_nrc_sentiment(data2[x==4])))
}

if (any(y == 3)) {
march_sentiment<-data.frame(get_nrc_sentiment(data2[x==3])))
}

if (any(y == 2)) {
february_sentiment<-data.frame(get_nrc_sentiment(data2[x==2])))
}
#january
if (any(y == 1)) {
january_sentiment<-data.frame(get_nrc_sentiment(data2[x==1])))
}

如果 3 月的某些数据值不存在,但在其他数据中存在,我该如何编写代码,以便它只创建一个包含存在情绪的大型数据框

作为参考,这是我现在正在做的事情

monthly_sentiment<-data.frame(january_sentiment,february_sentiment,march_sentiment,
                              april_sentiment,may_sentiment,june_sentiment,
                              july_sentiment,august_sentiment)

很难确切知道您需要什么,因为您没有向我们展示示例数据集,也没有告诉我们您所说的“合并”或“集团”的确切含义。

但是考虑到您所说的,一种方法可能是如果数据框存在则将数据框分配给单个列表,而当它们不存在时什么也不做。然后,您可以使用 Reducemerge 或您喜欢的机制合并列表中的所有数据集。

datasets <- list()
datasets[['january']] <- data.frame(idx = 1:2, jan = 1:2)
datasets[['february']] <- data.frame(idx = 2:3, feb = 2:3)
datasets[['april']] <- data.frame(idx = 0:1, apr = 0:1)

Reduce(function(x, y) merge(x, y, all=TRUE), datasets)
#>   idx jan feb apr
#> 1   0  NA  NA   0
#> 2   1   1  NA   1
#> 3   2   2   2  NA
#> 4   3  NA   3  NA