R 中的条件 if/else 语句

Conditional if/else statement in R

我正在学习改进我的 R 编码。我有这个代码:

data$score[testA == 1] <- testA_score
data$score[testB==1] <- testB_score

所以基本上我有四列要合并为一列:testA=1 表示学生是否参加了版本 A 测试,testA_score 是他们的分数; testB=1 表示学生是否参加了测试版本 B,testB_score 是他们的分数。我想将这些信息合并到新的列分数中。

还有 假设我有 testA、testB 到 testH。所有值都是 0 或 1。如果任何测试 = 1,我如何创建新列 test_complete = 1?

基本上,作为前 Stata 用户,我正在寻找与 egen rowtotal 和 egenrowfirst 等效的 R 命令。非常感谢。

因此,如果我理解正确,按行取最大值应该可以满足您的需求:

binary <- c(0,1)

df <- data.frame(
    score1 = sample(binary, 20, replace = TRUE),
    score2 = sample(binary, 20, replace = TRUE),
    score3 = sample(binary, 20, replace = TRUE)
)

df$passed <- apply(df, 1, max)

head(df)

您可以从所有测试中取出最大值:因为它只有在至少完成一项测试时才会有 1 或 0 值,最大值将等于 1

  testA <- c(1,0, 0, 1,0,0,0)
  testB <- c(0, 1,0, 0, 1,0,1)
  testC <- c(0, 0, 0,1, 0, 1, 0)

  df <- as.data.frame(cbind(testA, testB, testC))
  df$completed <- apply(df[, 1:3], 1, max)