我有一个如下所示的数据框:
如何删除 na 并使用以下值上升?
谢谢
id name.america name.europe name.asia
1 a <NA> <NA>
2 <NA> b <NA>
3 <NA> <NA> c
4 d <NA> <NA>
更改为:
id name.america name.europe name.asia
1 a b c
2 d
最佳答案
我们可以循环遍历列并删除 NA
,然后通过附加 NA 使
在获取 list
元素的 length
相同list
元素的 max
长度后。在此基础上,对数据集的“id”列进行子集化并附加输出
lst <- lapply(df1[-1], na.omit)
lst1 <- lapply(lst, `length<-`, max(lengths(lst)))
out <- data.frame(lst1)
out1 <- cbind(id = df1$id[seq_len(nrow(out))], out)
out1
# id name.america name.europe name.asia
#1 1 a b c
#2 2 d <NA> <NA>
如果我们需要将 NA
更改为空白 (""
) - 不推荐
out1[is.na(out1)] <- ""
数据
df1 <- structure(list(id = 1:4, name.america = c("a", NA, NA, "d"),
name.europe = c(NA, "b", NA, NA), name.asia = c(NA, NA, "c",
NA)), class = "data.frame", row.names = c(NA, -4L))
关于r - 如何删除 R 中的 na 并使以下值上升,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53637106/