有什么办法可以重新排列此类数据?

时间:2019-02-05 04:09:34

标签: r dataframe structure

每个ID都有性别和年龄以及功能数据。我想知道应该如何获取一个可以分析的数据集。

------------------------
original data form is:
ID gender age fun
1 M 10 2.5
1 M 10 2.4
1 M 10 3.3
1 M 10 5.5
1 M 10 2.2
2 F 11 4.4
2 F 11 3.3
2 F 11 2.2
2 F 11 1.1
2 F 11 3.3


I want a from of data like:
ID gender age fun
1 M 10 2.5 2.4 3.3 5.5 2.2
2 F 11 4.4 3.3 2.2 1.1 3.3

------------------------

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

使用tidyverse的解决方案。

library(tidyverse)

dat2 <- dat %>%
  group_by(ID) %>%
  mutate(N = 1:n()) %>%
  spread(N, fun) %>%
  ungroup()
dat2
# # A tibble: 2 x 8
#      ID gender   age   `1`   `2`   `3`   `4`   `5`
#   <int> <chr>  <int> <dbl> <dbl> <dbl> <dbl> <dbl>
# 1     1 M         10   2.5   2.4   3.3   5.5   2.2
# 2     2 F         11   4.4   3.3   2.2   1.1   3.3

数据

dat <- read.table(text = "ID gender age fun
1 M 10 2.5
1 M 10 2.4
1 M 10 3.3
1 M 10 5.5
1 M 10 2.2
2 F 11 4.4
2 F 11 3.3
2 F 11 2.2
2 F 11 1.1
2 F 11 3.3",
                  header = TRUE, stringsAsFactors = FALSE)