R - 检查向量中的元素是否存在于 data.frame 中,如果不存在,则添加虚拟值
R - Check if element from vector exist in data.frame, and if not, add dummy values
具有活动向量:
campaignsTypes <- c("Social Media","Distribution","Nurture","Newsletter","Push")
和一个 data.frame 以及关于他们的信息:
out <- structure(list(Type = c("Distribution", "Newsletter", "Nurture",
"Social Media"), Pageviews = c(42, 880, 17, 84)), .Names = c("Type",
"Pageviews"), row.names = c(NA, -4L), class = "data.frame")
我想检查向量 campaignsTypes
中的所有元素是否都包含在 data.frame out
中,如果没有,则为这个缺失的广告系列创建一个包含虚拟值的新行。到目前为止,我可以检查是否不存在 campaigngType。但是,我在将 vector 中不存在的元素分配为手动插入的新行的第一列的值时遇到问题:
> ifelse(campaignsTypes %in% out$Type == FALSE,rbind(out, c(????,0)),"")
How to put the value of the missing campaign here?----------⤴
一种方法,
output <- rbind(out, campaignsTypes[sapply(campaignsTypes, function(i) !(i %in% out$Type))])
output$Pageviews[output$Pageviews == output$Type] <- 0
output
# Type Pageviews
#1 Distribution 42
#2 Newsletter 880
#3 Nurture 17
#4 Social Media 84
#5 Push 0
您可以创建一个包含缺失行的新数据框,然后堆叠
两个数据框。
rbind(out, data.frame(Type=setdiff(campaignsTypes, out$Type),
Pageviews=0L))
结果:
Type Pageviews
1 Distribution 42
2 Newsletter 880
3 Nurture 17
4 Social Media 84
5 Push 0
具有活动向量:
campaignsTypes <- c("Social Media","Distribution","Nurture","Newsletter","Push")
和一个 data.frame 以及关于他们的信息:
out <- structure(list(Type = c("Distribution", "Newsletter", "Nurture",
"Social Media"), Pageviews = c(42, 880, 17, 84)), .Names = c("Type",
"Pageviews"), row.names = c(NA, -4L), class = "data.frame")
我想检查向量 campaignsTypes
中的所有元素是否都包含在 data.frame out
中,如果没有,则为这个缺失的广告系列创建一个包含虚拟值的新行。到目前为止,我可以检查是否不存在 campaigngType。但是,我在将 vector 中不存在的元素分配为手动插入的新行的第一列的值时遇到问题:
> ifelse(campaignsTypes %in% out$Type == FALSE,rbind(out, c(????,0)),"")
How to put the value of the missing campaign here?----------⤴
一种方法,
output <- rbind(out, campaignsTypes[sapply(campaignsTypes, function(i) !(i %in% out$Type))])
output$Pageviews[output$Pageviews == output$Type] <- 0
output
# Type Pageviews
#1 Distribution 42
#2 Newsletter 880
#3 Nurture 17
#4 Social Media 84
#5 Push 0
您可以创建一个包含缺失行的新数据框,然后堆叠 两个数据框。
rbind(out, data.frame(Type=setdiff(campaignsTypes, out$Type),
Pageviews=0L))
结果:
Type Pageviews
1 Distribution 42
2 Newsletter 880
3 Nurture 17
4 Social Media 84
5 Push 0