我有一个如下数据集:
dat1 <- read.table(header=TRUE, text="
ID Pa Gu Ta
8645 Rel345 Gel294 Tel452
6228 Rel345 Gel294 Tel467
5830 Rel345 Gel294 Tel467
1844 Rel345 Gel295 Tel467
4461 Rel345 Gel295 Tel467
2119 Rel345 Gel294 Tel452
")
dat1
ID Pa Gu Ta
1 8645 Rel345 Gel294 Tel452
2 6228 Rel345 Gel294 Tel467
3 5830 Rel345 Gel294 Tel467
4 1844 Rel345 Gel295 Tel467
5 4461 Rel345 Gel295 Tel467
6 2119 Rel345 Gel294 Tel452
我想要一个基于固定文本Number_00
的新列和行数。例如:新ID ID3
的第一个值为Number_001
,然后是Number_002
,依此类推。我做了以下事情。我需要帮助才能获得ID3
。
dat1$ID1 <- c(1:nrow(dat1))
dat1
ID Pa Gu Ta ID1
1 8645 Rel345 Gel294 Tel452 1
2 6228 Rel345 Gel294 Tel467 2
3 5830 Rel345 Gel294 Tel467 3
4 1844 Rel345 Gel295 Tel467 4
5 4461 Rel345 Gel295 Tel467 5
6 2119 Rel345 Gel294 Tel452 6
dat1$ID2 <- "Number_00"
dat1
ID Pa Gu Ta ID1 ID2
1 8645 Rel345 Gel294 Tel452 1 Number_00
2 6228 Rel345 Gel294 Tel467 2 Number_00
3 5830 Rel345 Gel294 Tel467 3 Number_00
4 1844 Rel345 Gel295 Tel467 4 Number_00
5 4461 Rel345 Gel295 Tel467 5 Number_00
6 2119 Rel345 Gel294 Tel452 6 Number_00
答案 0 :(得分:2)
您可以使用do.call
在数据的每一行调用paste0
:
dat1$ID3 <- do.call(paste0, dat1[c("ID2", "ID1")])
dat1
# ID Pa Gu Ta ID1 ID2 ID3
#1 8645 Rel345 Gel294 Tel452 1 Number_00 Number_001
#2 6228 Rel345 Gel294 Tel467 2 Number_00 Number_002
#3 5830 Rel345 Gel294 Tel467 3 Number_00 Number_003
#4 1844 Rel345 Gel295 Tel467 4 Number_00 Number_004
#5 4461 Rel345 Gel295 Tel467 5 Number_00 Number_005
#6 2119 Rel345 Gel294 Tel452 6 Number_00 Number_006
答案 1 :(得分:2)
您可以一步完成所有事情:
dat1$ID3 <- paste0("Number_00",1:nrow(dat1))
但是,当你达到两位数时,你可能不会想要两个前导零。如果是这种情况你可以这样做(注意我通过复制你的例子中的最后四行增加到十行):
dat1$ID3 <- paste0("Number_",sprintf("%03d",1:nrow(dat1)))
# ID Pa Gu Ta ID3
#1 8645 Rel345 Gel294 Tel452 Number_001
#2 6228 Rel345 Gel294 Tel467 Number_002
#3 5830 Rel345 Gel294 Tel467 Number_003
#4 1844 Rel345 Gel295 Tel467 Number_004
#5 4461 Rel345 Gel295 Tel467 Number_005
#6 2119 Rel345 Gel294 Tel452 Number_006
#7 5830 Rel345 Gel294 Tel467 Number_007
#8 1844 Rel345 Gel295 Tel467 Number_008
#9 4461 Rel345 Gel295 Tel467 Number_009
#10 2119 Rel345 Gel294 Tel452 Number_010
使用第一种方法,最后一次ID3
将为Number_0010
。