【问题标题】:How to remove value to the front of the data.frame in R [duplicate]如何在R中删除data.frame前面的值[重复]
【发布时间】:2019-11-26 13:38:24
【问题描述】:

我有一个像 list.1 这样的 data.frame,NA 太多了,所以我想删除 data.frame 前面的值,这样我可以删除多余的列。
@ 987654322@

#  ID   col1     col2    col3    col4   col5    col6   col7
#1  1    2         3       NA      4     NA       NA     8
#2  2    3         NA      6       NA    6        NA    NA
#3  3    NA        2       NA      7     7         1     8

我想要的结果是: list.2

#  ID   col1     col2    col3    col4   col5    col6   col7
#1  1    2         3       4      8      NA      NA     NA
#2  2    3         6       6      NA     NA      NA     NA
#3  3    2         7       7      1      8       NA     NA

所以,我可以删除col6col7 以使data.frame 看起来更好

【问题讨论】:

  • 所以这些列没有任何意义?因为否则你会改变你不应该改变的值。想象一下,每一列代表一个特定的月份和降雨量。那么简单地用 7 月的降雨量来覆盖 6 月的空降雨量是非常错误的。
  • 也许 data.frame 不是正确的格式。您的数据的目标是什么?
  • 首先,非常感谢您提醒我。实际上我首先拆分了一列,然后删除了一些不需要的值,这些值产生了很多 NA 值。每列没有实质意义,因此值的移动不会影响数据@Fnguyen @Jonny Phelps

标签: r


【解决方案1】:

一个选项可能是:

df[-1] <- t(apply(df[-1], 1, function(x) x[order(is.na(x))]))

  ID col1 col2 col3 col4 col5 col6 col7
1  1    2    3    4    8   NA   NA   NA
2  2    3    6    6   NA   NA   NA   NA
3  3    2    7    7    1    8   NA   NA

【讨论】:

  • 非常感谢。我能否再补充一个问题:如何将每列中不属于 c(1,2,3) 的值更改为 NA
  • 你可以试试sapply(df[-1], function(x) replace(x, x &lt;= 3, NA)) df[df &lt;= 3] &lt;- NA
猜你喜欢
  • 2015-09-29
  • 2018-10-23
  • 2013-02-19
  • 1970-01-01
  • 1970-01-01
  • 2016-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多