我目前面临的问题是,我已经根据表中特定值的位置生成了行号列表。内容如下:
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{}
}