将新行条目附加到R中的上一行

时间:2016-10-14 16:09:38

标签: r

我是R的新手,我有像下面这样的制表符分隔文件

        A1  HI_0004674; HI_0005524; HI_0016055; HI_0004672; HI_0004674; HI_0005524; HI_0005634; HI_0005730; HI_0005737; HI_0005829; HI_0005956; HI_0006468; HI_0007067; HI_0007228; HI_0007310; HI_0007411; HI_0007623; HI_0009267; HI_0016055; HI_0022416; HI_0030177; HI_0031397; HI_0031647; HI_0045475; HI_0045880; HI_0046331; HI_0048749; HI_0060810; HI_0001558; HI_0004674; HI_0005524; HI_0005634; HI_0005956; HI_0006351; HI_0006355; HI_0006468; HI_0006915; HI_0008284; HI_0016055; HI_0019888; HI_0030177; HI_0030307; HI_0042127; HI_0043154; HI_0045732; HI_0046777; HI_0048511; HI_0071174;
HI_0004674; HI_0005524; HI_0005634; HI_0016055; HI_0048511; HI_0004674; HI_0005524; HI_0005634; HI_0016055; HI_0004674; HI_0005524; HI_0005634; HI_0006351; HI_0006355; HI_0006468; HI_0006915; HI_0008284; HI_0016055; HI_0030177; HI_0030307; HI_0043154; HI_0045732; HI_0048511; HI_0071174; HI_0004674; HI_0005524; HI_0005634; HI_0006351; HI_0006355; HI_0006468; HI_0006915; HI_0008284; HI_0016055; HI_0030177; HI_0030307; HI_0043154; HI_0045732; HI_0047485; HI_0048511; HI_0071174; HI_0004674; HI_0005524; HI_0005634; HI_0005654; HI_0005829; HI_0005886; HI_0006351; HI_0006355; HI_0006457; HI_0006468; HI_0006915; HI_0007165; HI_0008284; HI_0016055; HI_0016580; HI_0016581; HI_0019888; HI_0030177; HI_0030307; HI_0043154; HI_0045732; HI_0046777; HI_0047485; HI_0048511; HI_0051879; HI_0061077; HI_0071174; HI_1901796; 
HI_0004674; HI_0005524; HI_0005634; HI_0005956; HI_0006351; HI_0006355; HI_0006468; HI_0006915; HI_0008013; HI_0008284; HI_0016055; HI_0016301; HI_0016580; HI_0016581; HI_0019888; HI_0030177; HI_0030307; HI_0031519; HI_0043154; HI_0045732; HI_0046777; HI_0047485; HI_0048511; HI_0071174; HI_0004674; HI_0005524; HI_0006468; HI_0008284; HI_0019888; HI_0030307; HI_0045732; HI_0046777
A2  HI_0004674; HI_0005524; HI_0016055; HI_0004672; HI_0004674; HI_0005524; HI_0005634; HI_0005730; HI_0005737; HI_0005829; HI_0005956; HI_0006468; HI_0007067; HI_0007228; HI_0007310; HI_0007411; HI_0007623; HI_0009267; HI_0016055; HI_0022416; HI_0030177; HI_0031397; HI_0031647; HI_0045475; HI_0045880; HI_0046331; HI_0048749; HI_0060810; HI_0001558; HI_0004674; HI_0005524; HI_0005634; HI_0005956; HI_0006351; HI_0006355; HI_0006468; HI_0006915; HI_0008284; HI_0016055; HI_0019888; HI_0030177; HI_0030307; HI_0042127; HI_0043154; HI_0045732; HI_0046777; HI_0048511; HI_0071174; 
HI_0004674; HI_0005524; HI_0005634; HI_0016055; HI_0048511; HI_0004674; HI_0005524; HI_0005634; HI_0016055; HI_0004674; HI_0005524; HI_0005634; HI_0006351; HI_0006355; HI_0006468; HI_0006915; HI_0008284; HI_0016055; HI_0030177; HI_0030307; HI_0043154; HI_0045732; HI_0048511; HI_0071174; HI_0004674; HI_0005524; HI_0005634; HI_0006351; HI_0006355; HI_0006468; HI_0006915; HI_0008284; HI_0016055; HI_0030177; HI_0030307; HI_0043154; HI_0045732; HI_0047485; HI_0048511; HI_0071174; HI_0004674; HI_0005524; HI_0005634; HI_0005654; HI_0005829; HI_0005886; HI_0006351; HI_0006355; HI_0006457; HI_0006468; HI_0006915; HI_0007165; HI_0008284; HI_0016055; HI_0016580; HI_0016581; HI_0019888; HI_0030177; HI_0030307; HI_0043154; HI_0045732; HI_0046777; HI_0047485; HI_0048511; HI_0051879; HI_0061077; HI_0071174; HI_1901796; 
HI_0004674; HI_0005524; HI_0005634; HI_0005956; HI_0006351; HI_0006355; HI_0006468; HI_0006915; HI_0008013; HI_0008284; HI_0016055; HI_0016301; HI_0016580; HI_0016581; HI_0019888; HI_0030177; HI_0030307; HI_0031519; HI_0043154; HI_0045732; HI_0046777; HI_0047485; HI_0048511; HI_0071174; HI_0004674; HI_0005524; HI_0006468; HI_0008284; HI_0019888; HI_0030307; HI_0045732; HI_0046777

我想重新安排数据框,以便在每个ID之前添加新行条目,如下所示:

提前致谢。亲自指导我

1 个答案:

答案 0 :(得分:3)

我们可以使用readLines阅读数据,创建包含grepcumsum的分组变量,然后使用paste'''使用tapply,然后read.tablegrp <- cumsum(!grepl("^(\\S+;|\\S+)$", lines[-1])) read.table(text=c(lines[1], tapply(lines[-1], grp, FUN = paste, collapse="")), header=TRUE, stringsAsFactors=FALSE) # Id Values #1 A1 Aj1;B3;C4;B23;C56;N23;G34;L78;Z65 #2 B2 Md1;K45;OK1;Nf3;P56;L76;A98 #3 C3 Q23;W12;Z56;K9v;j56;d34;H65

阅读
lines2 <- trimws(readLines("yourfile2.txt"))
grp <- cumsum(!grepl("^\\S+;", lines2))
read.csv(text=sub("\\s+", ",", tapply(lines2, grp, FUN = paste, 
         collapse="")), header= FALSE, stringsAsFactors=FALSE)
  V1
1 A1
2 A2
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            V2
1 HI_0004674; HI_0005524; HI_0016055; HI_0004672; HI_0004674; HI_0005524; HI_0005634; HI_0005730; HI_0005737; HI_0005829; HI_0005956; HI_0006468; HI_0007067; HI_0007228; HI_0007310; HI_0007411; HI_0007623; HI_0009267; HI_0016055; HI_0022416; HI_0030177; HI_0031397; HI_0031647; HI_0045475; HI_0045880; HI_0046331; HI_0048749; HI_0060810; HI_0001558; HI_0004674; HI_0005524; HI_0005634; HI_0005956; HI_0006351; HI_0006355; HI_0006468; HI_0006915; HI_0008284; HI_0016055; HI_0019888; HI_0030177; HI_0030307; HI_0042127; HI_0043154; HI_0045732; HI_0046777; HI_0048511; HI_0071174;HI_0004674; HI_0005524; HI_0005634; HI_0016055; HI_0048511; HI_0004674; HI_0005524; HI_0005634; HI_0016055; HI_0004674; HI_0005524; HI_0005634; HI_0006351; HI_0006355; HI_0006468; HI_0006915; HI_0008284; HI_0016055; HI_0030177; HI_0030307; HI_0043154; HI_0045732; HI_0048511; HI_0071174; HI_0004674; HI_0005524; HI_0005634; HI_0006351; HI_0006355; HI_0006468; HI_0006915; HI_0008284; HI_0016055; HI_0030177; HI_0030307; HI_0043154; HI_0045732; HI_0047485; HI_0048511; HI_0071174; HI_0004674; HI_0005524; HI_0005634; HI_0005654; HI_0005829; HI_0005886; HI_0006351; HI_0006355; HI_0006457; HI_0006468; HI_0006915; HI_0007165; HI_0008284; HI_0016055; HI_0016580; HI_0016581; HI_0019888; HI_0030177; HI_0030307; HI_0043154; HI_0045732; HI_0046777; HI_0047485; HI_0048511; HI_0051879; HI_0061077; HI_0071174; HI_1901796;HI_0004674; HI_0005524; HI_0005634; HI_0005956; HI_0006351; HI_0006355; HI_0006468; HI_0006915; HI_0008013; HI_0008284; HI_0016055; HI_0016301; HI_0016580; HI_0016581; HI_0019888; HI_0030177; HI_0030307; HI_0031519; HI_0043154; HI_0045732; HI_0046777; HI_0047485; HI_0048511; HI_0071174; HI_0004674; HI_0005524; HI_0006468; HI_0008284; HI_0019888; HI_0030307; HI_0045732; HI_0046777
2 HI_0004674; HI_0005524; HI_0016055; HI_0004672; HI_0004674; HI_0005524; HI_0005634; HI_0005730; HI_0005737; HI_0005829; HI_0005956; HI_0006468; HI_0007067; HI_0007228; HI_0007310; HI_0007411; HI_0007623; HI_0009267; HI_0016055; HI_0022416; HI_0030177; HI_0031397; HI_0031647; HI_0045475; HI_0045880; HI_0046331; HI_0048749; HI_0060810; HI_0001558; HI_0004674; HI_0005524; HI_0005634; HI_0005956; HI_0006351; HI_0006355; HI_0006468; HI_0006915; HI_0008284; HI_0016055; HI_0019888; HI_0030177; HI_0030307; HI_0042127; HI_0043154; HI_0045732; HI_0046777; HI_0048511; HI_0071174;HI_0004674; HI_0005524; HI_0005634; HI_0016055; HI_0048511; HI_0004674; HI_0005524; HI_0005634; HI_0016055; HI_0004674; HI_0005524; HI_0005634; HI_0006351; HI_0006355; HI_0006468; HI_0006915; HI_0008284; HI_0016055; HI_0030177; HI_0030307; HI_0043154; HI_0045732; HI_0048511; HI_0071174; HI_0004674; HI_0005524; HI_0005634; HI_0006351; HI_0006355; HI_0006468; HI_0006915; HI_0008284; HI_0016055; HI_0030177; HI_0030307; HI_0043154; HI_0045732; HI_0047485; HI_0048511; HI_0071174; HI_0004674; HI_0005524; HI_0005634; HI_0005654; HI_0005829; HI_0005886; HI_0006351; HI_0006355; HI_0006457; HI_0006468; HI_0006915; HI_0007165; HI_0008284; HI_0016055; HI_0016580; HI_0016581; HI_0019888; HI_0030177; HI_0030307; HI_0043154; HI_0045732; HI_0046777; HI_0047485; HI_0048511; HI_0051879; HI_0061077; HI_0071174; HI_1901796;HI_0004674; HI_0005524; HI_0005634; HI_0005956; HI_0006351; HI_0006355; HI_0006468; HI_0006915; HI_0008013; HI_0008284; HI_0016055; HI_0016301; HI_0016580; HI_0016581; HI_0019888; HI_0030177; HI_0030307; HI_0031519; HI_0043154; HI_0045732; HI_0046777; HI_0047485; HI_0048511; HI_0071174; HI_0004674; HI_0005524; HI_0006468; HI_0008284; HI_0019888; HI_0030307; HI_0045732; HI_0046777

对于新数据集

lines <- trimws(readLines("yourfile.txt"))

数据

lines <- trimws(readLines(textConnection("Id   Values
A1 Aj1;B3;C4;
B23;C56;N23;G34;
L78;Z65
B2 Md1;K45;OK1;
Nf3;P56;L76;
A98
C3 Q23;W12;Z56;
K9v;j56;d34;
H65")))

或者

library(sp)
library(raster)

lat1<- c(-0.755488889, -0.724580556)
long1<- c(36.44060833, 36.43528056)
latlon1<- cbind(lat1,long1)
crdref <- CRS('+proj=longlat +datum=WGS84')
lns1_YGLV <- spLines(latlon1, crs=crdref)
lns1_YGLV
plot(lns1_YGLV)

lat2<- c(-0.8396,   -0.735166667)
long2<- c(36.362475, 36.59591667)
latlong2<- cbind(lat2,long2)
crdref <- CRS('+proj=longlat +datum=WGS84')
lns2_SUGT <- spLines(latlong2, crs=crdref)
lns2_SUGT
plot(lns2_SUGT)

N<- shapefile("path\\file.shp")
plot(N)