【发布时间】:2018-08-12 14:19:55
【问题描述】:
喏,
我收集了很多反馈来创建一个可重复的示例和我的编码尝试。
这是一个示例数据框:
df <- data.frame("STUDENT" = 1:10,
"test_FALL" = c(0, 0, 0, 0, 1, 1, 1, 0, 0, NA),
"test_SPRING" = c(1, 1, 1, 1, 0, 0, 0, 1, 1, 1),
"score_FALL" = c(53, 52, 98, 54, 57 ,87, 62, 95, 75, NA),
"score_SPRING" = c(75, 54, 57, 51, 51, 81, 77, 87, 73, 69),
"final_SCORE" = c(75, 54, 57, 51, 57, 87, 62, 87, 73, 69))
以及示例代码:
df$final_score[df$test_SPRING == 1] <- df$score_SPRING
df$final_score[df$test_FALL == 1] <- df$score_FALL
第二次尝试代码:
df$final_score1[(df$test_SPRING == 1 & !is.na(df$test_SPRING))] <- df$score_SPRING
df$final_score1[(df$test_FALL == 1 & !is.na(df$test_FALL))] <- df$score_FALL
在我的数据框中,我有一个学生参加考试 (test_SPRING test_FALL) 和考试成绩 (score_SPRING score_FALL)。基本上我想创建包含在数据帧中的 final_SCORE 列,如果 test_SPRING = 1,tot_score = score_SPRING,否则如果 test_FALL = 1,tot_score = score_Fall。我无法这样做,并且在几个小时后无法弄清楚。请提供您可能有的任何建议。
【问题讨论】:
-
不清楚需要创建
tot_score还是final_score需要with(df, ifelse(test_SPRING == 1, score_SPRING, score_FALL)) -
df %>% mutate(tot_score = ifelse(test_SPRING, score_SPRING,score_FALL))
-
或使用
with(df, rowSums(cbind(score_SPRING * test_SPRING, score_FALL * test_FALL), na.rm = TRUE)) -
我已经编辑了这个问题,希望能澄清它。我在数据集中包含了 final_SCORE。那是我试图使用 final_score 和 final_score1 创建的变量
标签: r if-statement logic