繁体   English   中英

如何在具有特定 header 名称的列下有条件地更改行值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM