如何在数据框中展开包含向量的列

时间:2018-01-26 11:19:14

标签: r

如何扩展"代码范围"中的值?柱?我的数据有两列:Code RangeLable。我想在数据框中添加第三列,其中包含向量中的各个值。我如何在R?中做到这一点?

Code Range  Lable Codes(new Column)
61000:61055 Test1 61001
61000:61055 Test1 61002
61000:61055 Test1 61003
61000:61055 Test1 61004
61000:61055 Test1 61005
  .
  .
61000:61055 Test1 61055
0356T:0358T Test2 0356T
0356T:0358T Test2 0357T
0356T:0358T Test2 0358T
S9090:S9090 Test3 S9090
0062T:0062T Test4 0062T

不,我正在寻找像

这样的东西
Code Range  df.Lable Codes(new Column to be added)
61000:61055 Test1 61001
61000:61055 Test1 61002
61000:61055 Test1 61003
61000:61055 Test1 61004
61000:61055 Test1 61005
  .
  .
61000:61055 Test1 61055
0356T:0358T Test2 0356T
0356T:0358T Test2 0357T
0356T:0358T Test2 0358T
S9090:S9090 Test3 S9090
0062T:0062T Test4 0062T

2 个答案:

答案 0 :(得分:0)

对于基本R选项,我们可以对sub进行两次调用,以提取代码范围的起始和结束字符串。

df$start <- sub(":.*$",    "", df$Code_Range)
df$end   <- sub("^[^:]+:", "", df$Code_Range)

df
   Code_Range Label start   end
1 61000:61055 Test1 61000 61055
2 0356T:0356T Test2 0356T 0356T
3 S9090:S9090 Test3 S9090 S9090
4 0062T:0062T Test4 0062T 0062T

Demo

答案 1 :(得分:0)

你在找这样的东西吗?

df <- read.table(text="Code_Range  Lable
61000:61055 Test1
0356T:0356T Test2
S9090:S9090 Test3
0062T:0062T Test4", header=T)

library(stringr)
data.frame(str_split_fixed(df$Code_Range, ":", 2), df$Lable)


#      X1    X2 df.Lable
# 1 61000 61055    Test1
# 2 0356T 0356T    Test2
# 3 S9090 S9090    Test3
# 4 0062T 0062T    Test4