繁体   English   中英

在 R 中,将一列中的值分成两列

[英]In R separate values in one column into two columns

我有一个包含以下数据的三列数据集df1

ID  Age Games
1   36  10      
2   36  15      
3   36  20      
4   36  30      
1   37  40      
2   37  50      
3   37  35      
4   37  45      

这是 df1 数据集的 dput:

structure(list(ID = c(1, 2, 3, 4, 1, 2, 3, 4), Age = c(36, 36, 
36, 36, 37, 37, 37, 37), Games = c(10, 15, 20, 30, 40, 50, 35, 
45)), class = "data.frame", row.names = c(NA, -8L))

我希望数据以下表所示的方式显示,其中每个 ID 的年龄 36 和年龄 37 值的游戏现在位于单独的列中:

ID  Age36 Age37
1    10     0      
2    15     0      
3    20     0      
4    30     0      
1     0    40      
2     0    50      
3     0    35      
4     0    45

我的目标是从第二个表中创建一个带有两个折线图的折线图,一个用于每个 ID 的 Age36 游戏,另一个用于 Age 37 游戏,使用 pivot_longer 准备输入到 ggplot2 的数据(除非您可以推荐一个更好的方法)。

只需按照此代码

library(tidyverse)

df %>% mutate(row = row_number()) %>%
  pivot_wider(id_cols = c(row, ID), names_from = Age, values_from = Games, values_fill = 0L) %>%
  select(-row)

# A tibble: 8 x 3
     ID  `36`  `37`
  <dbl> <dbl> <dbl>
1     1    10     0
2     2    15     0
3     3    20     0
4     4    30     0
5     1     0    40
6     2     0    50
7     3     0    35
8     4     0    45

说明:由于您的 ID 列不是唯一的,我们必须使用row_number()创建一个虚拟 ID 列,最后我们可以取消选择它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM