2013-02-26 79 views
1

我目前有此循环来根据一系列索引修剪数据集(df_2)中的行,要包含的部分的开始和结束索引df_3中的2列,并创建一个新文件(df)。根据2列中的值范围有条件地填充数据帧列

for(i in 1:nrow(df_3)){ 
    if (i==1) df <- df_2[df_3$start[i]:df_3$end[i],] 
    else df <- rbind(df,df_2[df_3$start[i]:df_3$endi],]) 
} 

每个部分都有一个与其关联的值,它包含在df_3的第3列中。我想在df中创建一个重复与该部分相关的值的新列。

如果您有任何疑问,请随时提出澄清 - 真的很简单!

正如Joran建议 - 这里有一些例子

DF

index new_column 
0  
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 

DF_3

start _end new_column_values 

0  3  1 
4  6  2 
7  10 3 
+1

您应该添加样本数据 – 2013-02-26 16:48:30

+0

对不起,现在还不清楚。你必须更好地解释你想要做的事情。什么是'DF_2'?为什么'DF'中的'new_column'是空的?等等...... – Arun 2013-02-26 17:31:48

+0

ok-所以df_2是我原来未经编辑的数据帧。我正在从循环创建一个编辑框架(df),该框架以df3的开始和结束值为条件。新列是空的,因为我需要创建它(不是问题),并用df_3 $ new_column_values中的值填充它,取决于df_3 $ start和df_3 $ end中的范围值。这有帮助吗? – 2013-02-26 17:35:50

回答

0

如果我正确理解你的问题,你可能能够使用cut如下:

DF$new_column <- cut(DF$index, 
        breaks = c(DF_3$start[1], DF_3$end), 
        include.lowest = TRUE, 
        labels = DF_3$new_column_values) 
DF 
    index new_column 
1  0   1 
2  1   1 
3  2   1 
4  3   1 
5  4   2 
6  5   2 
7  6   2 
8  7   3 
9  8   3 
10  9   3 
11 10   3 

在此,我试图利用可用的信息。我们基本上创建了一个因子DF$index,因子水平由另一个data.frame中的范围决定。因此,对于cut,我已将breaks设置为包含第一个起始值和所有结束值的矢量,并且我已将“标签”设置为“new_column_values”变量的值。

请注意,生成的“new_column”不是(以当前形式)数字变量,而是一个因子。

+0

这工作得很好 - 谢谢! – 2013-02-28 14:24:59

相关问题