【发布时间】:2017-06-03 12:22:04
【问题描述】:
我想通过对考虑多个条件的值求和来构建一个新变量(以及一个额外的条件,见下文)。在这里你可以看到 R 代码,直到像我当前的问题一样。
# The raw dataframe
area <- c("A", "A", "B", "A", "C", "B", "A", "B", "A", "C")
varclass <- c("Z1", "Z1", "Z1", "Z2", "Z1", "Z1", "Z2", "Z1", "Z2", "Z2")
count <- c(45, 56, 2, 8, 345, 3, 98, 2, 6, 9)
df1 <- data.frame(area,
varclass,
count,
stringsAsFactors = FALSE)
df1
# See how df1 looks like...
# area varclass count
#1 A Z1 45
#2 A Z1 56
#3 B Z1 2
#4 A Z2 8
#5 C Z1 345
#6 B Z1 3
#7 A Z2 98
#8 B Z1 2
#9 A Z2 6
#10 C Z2 9
# Building the final dataframe
df2 <- data.frame(unique(df1$area),
stringsAsFactors = FALSE)
names(df2)[1] <- "area"
# See how df2 looks like...
# area
#1 A
#2 B
#3 C
# The new variable to build
df2$Z1_sum <- sum(df1[df1$varclass == "Z1" & df1$area == df2$area,]$count)
# doesn't work
# See what I hope
# area Z1_sum
#1 A 101
#2 B 7
#3 C 345
正如您在最后一行中看到的,我想在 df2 数据库中构建一个新变量 Z1_sum。 Z1_sum 是 df1 数据库中的计数总和,其中 varclass = "Z1" 和 df1$area 满足 df2$area 当前行的值(在 MS Excel 中,这意味着使用 LC1 或 $A2 单元格 ID)。
请考虑这样一个事实,即我不是在寻找涉及通过使用按条件分组或 dcast 函数从 df1 直接构建 df2 的解决方案...我只想要一个允许我返回正确值的公式在我的新专栏中。这是我的额外条件。为什么?这是因为我接下来要使用最复杂的公式构建其他变量,而不仅仅是一个总和。通过了解如何进行此类条件操作,我希望继续...
感谢您的帮助。
杰夫
【问题讨论】:
标签: r