2017-05-03 66 views
1

我有一个数据帧这样:子集数据

descriptionin = c("sample1","sample1","sample1","sample1","sample1","sample1","sample1","sample1","sample2","sample2","sample3","sample3","sample3","sample3","sample3","sample3") 
dilutionin = c(1,10,100,1000,1,10,100,1000,5,5,2,8,32,2,8,32) 
conditionin = c("cond1","cond1","cond1","cond1","cond2","cond2","cond2","cond2","cond1","cond2","cond1","cond1","cond1","cond2","cond2","cond2") 

testin <- data.frame(descriptionin,dilutionin,conditionin) 

,并想将数据帧到子集这样的:

descriptionout = c("sample1","sample1","sample1","sample1","sample1","sample1","sample1","sample1","sample3","sample3","sample3","sample3","sample3","sample3") 
dilutionout = c(1,10,100,1000,1,10,100,1000,2,8,32,2,8,32) 
conditionout = c("cond1","cond1","cond1","cond1","cond2","cond2","cond2","cond2","cond1","cond1","cond1","cond2","cond2","cond2") 

testout <- data.frame(descriptionout,dilutionout,conditionout) 

要解释,我会像通过具有多于一个数字(在这种情况下为1但实际数据集将是3)的稀释度的每个唯一描述/条件组合来对数据框进行子集分类。

感谢

回答

2

一种选择是data.table。将'data.frame'转换为'data.table'(setDT(testin)),按'descriptionin'和'conditionin'分组,我们找到组中具有多于一个的稀释度的元素的行索引(.I)和使用该索引来排列子集

​​
+1

谢谢!我在这里得到了一切,但是$ V1? – AwesomeeExpress

+0

@AwesomeeExpress通过使用'.I',创建一个默认名称为'V1'的列,其中包含行索引,我们通过'$ V1'提取该列并将其用于子集数据集的行 – akrun

+1

明白!再次感谢 – AwesomeeExpress