首页 > 解决方案 > R:R中的“折叠”行

问题描述

我正在使用 R 编程语言。

假设我有以下数据:

my_data <- data.frame(

"id" = c("1", "1", "1", "1", "2", "2", "2", "2" ),
"name" = c("john", "jason", "jack", "jim", "john", "jason", "jack", "jim" ),
"points" = c("150", "165", "183", "191", "151", "166", "184", "192"),
"gender" = c("male", "male", "male", "male", "male", "male", "male", "male"),
"country" = c("usa", "usa", "usa", "usa", "usa", "usa", "usa", "usa")
)

#view original data format
 my_data

  id  name points gender country
1  1  john    150   male     usa
2  1 jason    165   male     usa
3  1  jack    183   male     usa
4  1   jim    191   male     usa
5  2  john    151   male     usa
6  2 jason    166   male     usa
7  2  jack    184   male     usa
8  2   jim    192   male     usa

假设对于上述数据:“gender”和“country”将始终具有相同的值。此外,这 4 个名称将始终一起出现 - 每次它们一起出现时,它们的“id”都是相同的数字。唯一可以改变的数字是它们从迭代到迭代的“点”数(即它们的“id”)。

问题:有什么办法可以将上面的数据集自动转换成下面的数据集?

my_data_1 <- data.frame(

"id" = c("1", "2"),
"john_points" = c("150", "151"),
"jason_points" = c("165", "166"),
"jack_points" = c("183", "184"),
"jim_points" = c("191", "192"),
"gender" = c("male", "male"),
"country" = c("usa", "usa")
)

#view desired data format

  my_data_1
  id john_points jason_points jack_points jim_points gender country
1  1         150          165         183        191   male     usa
2  2         151          166         184        192   male     usa

有什么方法可以“折叠”这些数据,并且变量名称可以自动重命名为每个人的“name_points”(例如 john_points、jack_points 等)?

目前,我正在尝试在 Excel 中手动执行此操作 - 但有没有办法在 R 中自动“折叠”这些数据?

谢谢

标签: rdataframedata-manipulation

解决方案


推荐阅读