[英]how to change conditionally row values when under column with specific header name
我有一个像下面这样的数据集:
ProszęAveryextendedname <- c("A","A","A","A","B","B","B")
var2 <- c("B","B","B","B","B","B","B")
var3 <- c("B","B","B","B","B","B","B")
ProszęBveryextendedname <- c("A","A","A","A","B","B","B")
var5 <- c("B","B","B","B","B","B","B")
var6 <- c("B","B","B","B","B","B","B")
df <- data.frame(ProszęAveryextendedname , var2, var3, ProszęBveryextendedname, var5, var6)
请只针对特殊的字母表,尽可能长。 我想做的是创建一个代码,以便每次在其名称中标题为“Proszę”的列下,都有一个值为“A”的行,相邻的行应该有一个 NA 值。 如何使用 tidyverse、迭代 function 或通过循环来实现这一点?
最简单的预期结果
ProszeAveryextendedname var2 var3 ProszeBveryextendedname var5 var6
1 A NA NA A NA NA
2 A NA NA A NA NA
3 A NA NA A NA NA
4 A NA NA A NA NA
5 B B B B B B
6 B B B B B B
7 B B B B B B
library(dplyr)
library(purrr)
ind <- grepl("Proszę", names(df));
df <- purrr::map_dfc(split.default(df, cumsum(ind)),
~ .x %>% mutate(across(-1,
~ replace(.x, cur_data()[[1]] == "A", NA))))
-输出
df
ProszęAveryextendedname var2 var3 ProszęBveryextendedname var5 var6
1 A <NA> <NA> A <NA> <NA>
2 A <NA> <NA> A <NA> <NA>
3 A <NA> <NA> A <NA> <NA>
4 A <NA> <NA> A <NA> <NA>
5 B B B B B B
6 B B B B B B
7 B B B B B B
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.