我正在尝试根据x列中的值替换z列中的空值。
我已经使用filter()缩小到重要行,然后再应用mutate(),但是mutate值不会在原始数据帧中替换。我可以将其存储为新的数据框,但是由于数十个条件条件中发生这种情况,因此之后合并将是一个相当头疼的问题。
制作伪数据
xx <- data.frame(x = c(1,2,3), y = c("a","","c"), z=c(5,5,""))
xx %>% filter(x == 3) %>% # filter to value of interest
filter(z == "") %>% # filter to NA values to be replaced
mutate(z = replace(z, z =="", 5) ) # mutate to replace NA value
如果我这样做:
xx <- xx %>% filter(x == 3) %>% # filter to value of interest
filter(z == "") %>% # filter to NA values to be replaced
mutate(z = replace(z, z =="", 5) ) # mutate to replace NA value
然后仅存储一行...
我正在寻找一种保留所有其他数据框数据但替换突变数据的方法。
感觉它应该是一种快速修复方法,但是被卡在上面了一段时间。
答案 0 :(得分:0)
您可以在ifelse()
中使用dplyr::mutate()
语句。
df <- data.frame(x=sample(1:10,100,T),
y=sample(c(NA,1:5),100,T))
df %>% mutate(y=ifelse(is.na(y),x,y))
x y
1 7 7
2 10 3
3 7 1
4 7 1
5 10 4
6 3 3
...