使用 R 中的拆分函数拆分值列

Splitting the values column using split function in R

我有制表符分隔的文本,其中第 1 列显示汽车,第 2 列有相应的匹配项。在下面的示例中,Car_1 只有命中,而 Car_3 和 Car_4 分别有 2 次和 3 次命中。它们给出如下:

>df
     Car    Hits
    Car_1 omini|red|90%
    Car_2
    Car_3 Skoda|blue|97%
          Audi|orange|96%
          Ibiza|white|96%
    Car_6 Honda|black|93%
          BMW|blue|100% 

我想拆分第二列,以便 Car_3 和 Car_6 的多个匹配排列在单个制表符分隔的行中,如下所示

>df
     Car     Hits
    Car_1 omini|red|90%
    Car_2
    Car_3 Skoda|blue|97% Audi|orange|96% Ibiza|white|96%   
    Car_6 honda|black|93% BMW|blue|100% 

我在 R 中尝试了以下代码,但没有成功

>split(df,df$Hits)

任何人都可以帮助我获得所需的输出。

提前致谢

示例数据:

df = data.frame(Cars = c("Car_1", "Car_2", "Car_3", "", "", "Car_6", ""), Hits = c("omini|red|90%", "", "Skoda|blue|97%", "Audi|orange|96%", "Ibiza|white|96%", "Honda|black|93%", "BMW|blue|100%"))

p)

已编辑 解决方案:


for(i in 1:dim(df)[1]){ if(df$Hits[i] != "" && df$Cars[i] == ""){ df$Cars[i] = df$Cars[i-1]}}

required = aggregate(Hits ~ Cars, data = df, paste, collapse = " ")
df <- data.frame(car=c("Car_1", "Car_2","Car_3","Car_3","Car_3","Car_6","Car_6"), 
                 Hits=c("omini|red|90%", "", "Skoda|blue|97%", "Audi|orange|96%", "Ibiza|white|96%", "Honda|black|93%","BMW|blue|100% ")) 

   > df
        car            Hits
    1 Car_1   omini|red|90%
    2 Car_2                
    3 Car_3  Skoda|blue|97%
    4 Car_3 Audi|orange|96%
    5 Car_3 Ibiza|white|96%
    6 Car_6 Honda|black|93%
    7 Car_6  BMW|blue|100% 
    > ddply(data.frame(df), .(car), summarise,Names=paste(Hits, collapse=" "))
        car                                      Names
    1 Car_1                                  omini|red|90%
    2 Car_2                                               
    3 Car_3 Skoda|blue|97% Audi|orange|96% Ibiza|white|96%
    4 Car_6                 Honda|black|93% BMW|blue|100%