在R中将数据行组合成一个不常见的方面

时间:2017-09-19 13:27:11

标签: r

我有这个数据框,类似于以下内容。

    Code    Title    Year    Number    Allocation
    1000    Jack     2001    NA        6
    1000    Jack     2002    NA        NA
    1000    Jack     2003    NA        NA
    1000    Jack     2004    113       NA
    1000    Jack     2005    NA        NA
    1001    Dave     2001    NA        19
    1001    Dave     2002    NA        NA
    1001    Dave     2003    NA        NA
    1001    Dave     2004    101       NA
    1001    Dave     2005    NA        NA

等等。

这样的数据框用不同的标题重复,并且数字出现在' Number'在2004年和'分配'在2001年。 我将如何改变数据,使其成为数据框的单行

    Code    Title    Number    Allocation
    1000    Jack     113       6
    1001    Dave     101       19

1 个答案:

答案 0 :(得分:0)

这也有效:

library(dplyr)

df %>%
  select(-Year) %>%
  group_by(Code, Title) %>%
  mutate_all(funs(sort(.))) %>%
  distinct()

或:

df %>%
  group_by(Code, Title) %>%
  mutate_all(funs(sort(.))) %>%
  distinct(Code, Title, Number, Allocation)

<强>结果:

# A tibble: 2 x 4
# Groups:   Code, Title [2]
   Code  Title Number Allocation
  <int> <fctr>  <int>      <int>
1  1000   Jack    113          6
2  1001   Dave    101         19

数据:

df = read.table(text="    Code    Title    Year    Number    Allocation
                1000    Jack     2001    NA        6
                1000    Jack     2002    NA        NA
                1000    Jack     2003    NA        NA
                1000    Jack     2004    113       NA
                1000    Jack     2005    NA        NA
                1001    Dave     2001    NA        19
                1001    Dave     2002    NA        NA
                1001    Dave     2003    NA        NA
                1001    Dave     2004    101       NA
                1001    Dave     2005    NA        NA", header = TRUE)