簡體   English   中英

根據條件更改列,保留原始內容

[英]mutate column based on conditions, preserving original content

我將如何在列上設置條件突變,但保留原始內容。

例如,考慮:

DF=data.frame(A=1:10, B=c("fail1", "fail2", rep(NA,8)))

DF=DF %>% mutate(B = ifelse(A<4,paste(B, "less than 4"),B))

我想要的是產生以下內容:

DF_want=data.frame(A=1:10, B=c("fail1 less than 4", "fail2 less than 4", "less than 4", rep(NA,7)))

但是因為我是直接調用B列,而不是B的特定行,所以這沒有發生。

我看到的預期輸出與實際輸出之間的唯一區別是B的第三項,即NA less than 4而不是less than 4 這是因為paste()工作方式; 考慮以下:

paste(NA, "a")
# [1] "NA a"

因此,改為這樣做:

DF %>% mutate(B = sub("NA", "", ifelse(A < 4,paste(B, "less than 4"), B)))

    A                 B
1   1 fail1 less than 4
2   2 fail2 less than 4
3   3       less than 4
4   4              <NA>
5   5              <NA>
6   6              <NA>
7   7              <NA>
8   8              <NA>
9   9              <NA>
10 10              <NA>

另一種可能性:

DF %>%
  mutate(B = ifelse(A < 4 & !is.na(B), paste(B, "less than 4"), 
                    ifelse(A < 4 & is.na(B), paste("less than 4"), B))) 

    A                 B
1   1 fail1 less than 4
2   2 fail2 less than 4
3   3       less than 4
4   4              <NA>
5   5              <NA>
6   6              <NA>
7   7              <NA>
8   8              <NA>
9   9              <NA>
10 10              <NA>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM