且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

使用循环用同一列中的特定行值替换列中的值

更新时间: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)