根据现有数据框有条件地将数据框合并为一个数据框
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)
很难确切知道您需要什么,因为您没有向我们展示示例数据集,也没有告诉我们您所说的“合并”或“集团”的确切含义。
但是考虑到您所说的,一种方法可能是如果数据框存在则将数据框分配给单个列表,而当它们不存在时什么也不做。然后,您可以使用 Reduce
和 merge
或您喜欢的机制合并列表中的所有数据集。
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
我的数据框仅根据特定条件存在,因此有时并非所有可能的数据框都存在。它基于数据集中的一列中有多少个唯一值。我希望拥有可以随时间更新的通用代码,以便随着时间的推移存在更多唯一值,我可以将它们添加到一个综合数据框中。以下代码创建包含唯一值的对象。
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)
很难确切知道您需要什么,因为您没有向我们展示示例数据集,也没有告诉我们您所说的“合并”或“集团”的确切含义。
但是考虑到您所说的,一种方法可能是如果数据框存在则将数据框分配给单个列表,而当它们不存在时什么也不做。然后,您可以使用 Reduce
和 merge
或您喜欢的机制合并列表中的所有数据集。
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