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

时间:2015-04-23 14:25:29

标签: r split

我有制表符分隔文本,其中第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)

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

提前致谢

2 个答案:

答案 0 :(得分:1)

示例数据:

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 = " ")

p)的

<强>被修改 溶液

ui->setupUi(this);
ui->lbl_image_istruction->setScaledContents(true);
ui->txt_instruction->setText( "Please load the image you want to analyze" );

QVBoxLayout *layout = new QVBoxLayout();

layout->addWidget(ui->label_show);

ui->label_show->setScaledContents(true);
ui->scrollContent->setLayout(layout);
ui->label_show->installEventFilter(this);

答案 1 :(得分:1)

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%