【问题标题】:r rearrange rows by Id [duplicate]r按Id重新排列行[重复]
【发布时间】:2019-10-01 05:13:44
【问题描述】:

假设这是我的数据集

  Id    Name     Score     Fear     Satisfaction
  1     A        10        NA       NA
  1     B        11        NA       NA
  1     A        NA        23.2     NA
  1     B        NA        34.1     NA
  1     A        NA        NA       42.11
  1     B        NA        NA       31.19

如何清理这个数据集,使所有行都像下面这样正确对齐,并且下面没有太多不必要的 NA

 Id    Name     Score     Fear     Satisfaction
  1     A        10        23.2     42.11
  1     B        11        34.1     31.19

如果我无法更准确地解释这一点,我深表歉意,但我认为这个示例应该会有所帮助。提前致谢。

【问题讨论】:

  • 使用dplyr, df %>% group_by(Id, Name) %>% summarise_all(na.omit)

标签: r transform


【解决方案1】:

如果您的列数有限,那么我相信这是最好的方法:

SELECT * 
FROM <table_name> 
WHERE 
       Score IS NOT NULL
   AND Fear IS NOT NULL 
   AND Satisfaction IS NOT NULL

【讨论】:

  • 不擅长 SQL:Score IS NOT 是做什么的?我也认为如果你有这么多条件,这可能效率低下。
【解决方案2】:

假设每组和每列有相同数量的非 NA 值,如示例所示,我们可以group_by IdName 并删除 NA

library(dplyr)

df %>%  group_by(Id, Name) %>%  summarise_all(na.omit)

#     Id Name  Score  Fear Satisfaction
#  <int> <fct> <int> <dbl>        <dbl>
#1     1 A        10  23.2         42.1
#2     1 B        11  34.1         31.2

【讨论】:

  • 太完美了,谢谢。
猜你喜欢
  • 2020-03-28
  • 2018-11-27
  • 2023-01-19
  • 2011-10-31
  • 1970-01-01
  • 1970-01-01
  • 2014-07-02
  • 2020-08-21
  • 2012-01-11
相关资源
最近更新 更多