根据列出R中数值的列拆分行

时间:2018-06-19 16:05:19

标签: r split row

我有一个这样的数据框:

Name<-c("v","v","x","y","z")
Position<-c(2,"5;7",3,198,"3;4")
Score<-c(0,100,200,144,3)
df<-data.frame(Name, Position, Score)
df
      Name Position Score
1    v        2     0
2    v      5;7   100
3    x        3   200
4    y      198   144
5    z      3,4     3

df$Position列中,我偶尔有两个(或更多)数字(例如,在第2行和第5行中)。我想复制这些行,以便它们中的每一个仅包含这些值之一。所以输出看起来像这样:

      Name Position Score
1     v         2      0
2     v         5    100
3     v         7    100
4     x         3    200
5     y       198    144
6     z         3      3
7     z         4      3

我也希望df$Position是数字。

1 个答案:

答案 0 :(得分:1)

我们可以使用separate_rows中的tidyr

library(tidyverse)
df %>% 
  separate_rows(Position, convert = TRUE)
#   Name Position Score
#1    v        2     0
#2    v        5   100
#3    v        7   100
#4    x        3   200
#5    y      198   144
#6    z        3     3
#7    z        4     3