R:如何从表中复制值并将其粘贴到指定行号范围内的所有行中?

  • 本文关键字:范围内 复制 r datatable
  • 更新时间 :
  • 英文 :


我目前面临的问题是,我已经根据表中特定值的位置生成了行号列表。内容如下:

row_values <- which(table[,1] == "place of work :")

这给我留下了一个包含"工作地点"的所有行号的列表。出现:

[1]     1   406   811  1216  1621  2026  2431  2836  3241  3646  4051  4456  4861  5266  5671  6076  6481  6886  7291  7696  8101  8506  8911  9316  9721 10126
[27] 10531 10936 11341 11746 12151 12556

总共32个条目。然后,我还有另一个包含许多代码(总共32个)的表:

Area Code (Origin)
[1,] "E41000293"       
[2,] "E41000294"       
[3,] "E41000295"       
[4,] "E41000296"       
[5,] "E41000297"       
[6,] "E41000298"       
[7,] "E41000299"       
[8,] "E41000300"       
[9,] "E41000301"       
[10,] "E41000302"       
[11,] "E41000303"       
[12,] "E41000304"       
[13,] "E41000305"       
[14,] "E41000306"       
[15,] "E41000307"       
[16,] "E41000308"       
[17,] "E41000309"       
[18,] "E41000310"       
[19,] "E41000311"       
[20,] "E41000312"       
[21,] "E41000313"       
[22,] "E41000314"       
[23,] "E41000315"       
[24,] "E41000316"       
[25,] "E41000317"       
[26,] "E41000318"       
[27,] "E41000319"       
[28,] "E41000320"       
[29,] "E41000321"       
[30,] "E41000322"       
[31,] "E41000323"       
[32,] "E41000324"

我需要找到一种方法来粘贴那些"地区代码(起源)"值插入到原始表中的每一行之间的row_values如所示。这些将放在一个空白栏中,我称之为"地区代码(目的地)"。也就是说,E41000293应该位于从1到405的每一行的区号目的地列中,E41000294应该位于从406到810等。

如果有任何帮助,我将不胜感激,因为我不知道如何最好地解决这个问题。

谢谢,乔

您可以以一种聪明的方式使用cumsum来实现这一点:

library(dplyr)
table %>%
group_by(grp = cumsum(text == "place of work :")) %>% #change "text" to your column name
mutate(Area_Code = Area[grp,]) %>% #change Area to your table name
ungroup() %>%
select(-grp)

剩下要做的就是修改表名和列名来适应你的问题。

应该这样做:

for (i in 1:length(row_values)) {

if (i == length(row_values)-1) {
table[c(row_values[i]:(row_values[i+1])),'Area Codes (Destinations)'] = Areacode[i]
}  else if (i <length(row_values)-1)) {
table[c(row_values[i]:(row_values[i+1]-1)),'Area Codes (Destinations)'] = Areacode[i]
}else{}
}

最新更新