r - 如何删除 R 中的 na 并使以下值上升

标签 r reshape

我有一个如下所示的数据框:

如何删除 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/

相关文章:

r - R中的变点检测

r - 难以在 R 中拟合分段线性数据

r - Shiny 传单多边形的自定义静态着色

将面板数据宽格式 reshape 为长格式

python - 如何将列中的列表转换为垂直形状?

r - 向Prophet包添加自变量

python - 如何按照我需要的方式 reshape 这个数组?

python - 我可以在不复制数据的情况下组合 NumPy 数组中的非相邻维度吗?

python - 将 "grouped"列中的数据从长格式转换为宽/方形格式 pd.DataFrame

r - 在 Shiny 中两次使用相同的输出元素