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