更新时间:2022-12-09 09:22:23
我们创建一个逻辑向量,并根据该逻辑向量分配第一行值
We create a logical vector and assign the first row values based on the logical vector
i1 <- dt[-1] == 'On'
dt[-1][i1] <- unlist(dt[1, -1])[col(dt[-1])][i1]
dt[-1][!i1] <- ""
dt
# name Q1 Q2 Q3
#1 Recipient
#2 AB County 2
#3 BC County 1
#4 DF County 1
#5 EF County 3
#6 WE County 3
或使用 dplyr
library(dplyr)
dt %>%
mutate_at(vars(starts_with('Q')), ~ case_when(. == 'On' ~first(.), TRUE ~ ''))
dt <- data.frame(name, Q1, Q2, Q3, stringsAsFactors = FALSE)