2013-02-26 20 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

相關問題