1

我目前有这个循环来根据一系列索引修剪数据集(df_2)中的行,要包括的部分的开始和结束索引取自df_3中的2列,并创建一个新文件(df)。

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 所建议的那样——这里有一些例子

东风

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
4

1 回答 1

1

如果我正确理解您的问题,您可以使用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”不是(以当前形式)数字变量,而是一个因子。

于 2013-02-26T17:37:12.550 回答