0) + 1]) # -6ren">
gpt4 book ai didi

r - R中的聚合和ifelse函数

转载 作者:行者123 更新时间:2023-12-01 09:08:35 24 4
gpt4 key购买 nike

附上一些R代码:

temp_df <- data.frame(c("A","A","A","G","G","Z","Z"),
c("B","D","E","R","S","Y","U"),
c(1.5,1.1,0.8,0.2,0.8,0.9,0.1),
c(0.8,0.4,1.5,1.2,1.2,0.2,0.3),
c(2.7,2.7,2.7,2.4,2.4,0.5,0.5),
c("YES","NO","NO","NO","NO","YES","YES"))

colnames(temp_df) <- c("PERSON_1","PERSON_2","VALUE_1",
"VALUE_2","TOTAL_2","DECISION_2")

我要做的是根据以下规则创建一个名为“NEW_DECISION_1”的新列:

对于第 1 列(“PERSON_1”)的人,如果第 5 列(“TOTAL_2”)对应值的值大于等于 2.0 且对应值中至少有一个“YES”在第 6 列(“DECISION_2”)中,“NEW_DECISION_1”列的值为“YES”,如果不满足这些条件,则它们将获得“NO”值。

所以对于第 1 列中的 A 人,由于第 5 列中的值为 2.7,并且第 6 列中的相应值中至少有一个“YES”,那么新列中的值将为“YES”。

对于第 1 列的 G 人,由于第 5 列的值为 2.4,但由于第 6 列的对应值中没有“YES”值,因此新列中的值为“NO”。

对于第 1 列的 Z 人,由于第 5 列的值为 1.0,并且第 6 列的对应值中至少有一个“YES”,因此新列中的值为“NO”。所以新表将是:

temp_df$NEW_DECISION_1 <- c("YES","YES","YES","NO","NO","NO","NO")
temp_df

我正在考虑某种聚合规则,但我不确定使用什么函数来搜索“至少一个"is"”。

如果您需要更多信息或说明,请告诉我。

最佳答案

这是一个使用 ddply 的解决方案:

library(plyr)
ddply(temp_df, .(PERSON_1), transform,
NEW_DECISION_1 = c("NO", "YES")[(TOTAL_2 >= 2 &
sum(DECISION_2 == "YES") > 0) + 1])

# PERSON_1 PERSON_2 VALUE_1 VALUE_2 TOTAL_2 DECISION_2 NEW_DECISION_1
# 1 A B 1.5 0.8 2.7 YES YES
# 2 A D 1.1 0.4 2.7 NO YES
# 3 A E 0.8 1.5 2.7 NO YES
# 4 G R 0.2 1.2 2.4 NO NO
# 5 G S 0.8 1.2 2.4 NO NO
# 6 Z Y 0.9 0.2 0.5 YES NO
# 7 Z U 0.1 0.3 0.5 YES NO

关于r - R中的聚合和ifelse函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12936246/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com