我有一个数据框,它有几列,当将它们(按行)串联为字符串时,可以使我将数据框分成所需的形式。
> str(data)
'data.frame': 680420 obs. of 10 variables:
$ A : chr "2011-01-26" "2011-01-26" "2011-02-09" "2011-02-09" ...
$ B : chr "2011-01-26" "2011-01-27" "2011-02-09" "2011-02-10" ...
$ C : chr "2011-01-26" "2011-01-26" "2011-02-09" "2011-02-09" ...
$ D : chr "AAA" "AAA" "BCB" "CCC" ...
$ E : chr "A00001" "A00002" "B00002" "B00001" ...
$ F : int 9 9 37 37 37 37 191 191 191 191 ...
$ G : int NA NA NA NA NA NA NA NA NA NA ...
$ H : int 4 4 4 4 4 4 4 4 4 4 ...
每行数据,我想将列F、E、D和C中的数据连接成一个字符串(使用下划线字符作为分隔符)。以下是我的不成功尝试:data$id <- sapply(as.data.frame(cbind(data$F,data$E,data$D,data$C)), paste, sep="_")
以下是不希望的结果:
> str(data)
'data.frame': 680420 obs. of 10 variables:
$ A : chr "2011-01-26" "2011-01-26" "2011-02-09" "2011-02-09" ...
$ B : chr "2011-01-26" "2011-01-27" "2011-02-09" "2011-02-10" ...
$ C : chr "2011-01-26" "2011-01-26" "2011-02-09" "2011-02-09" ...
$ D : chr "AAA" "AAA" "BCB" "CCC" ...
$ E : chr "A00001" "A00002" "B00002" "B00001" ...
$ F : int 9 9 37 37 37 37 191 191 191 191 ...
$ G : int NA NA NA NA NA NA NA NA NA NA ...
$ H : int 4 4 4 4 4 4 4 4 4 4 ...
$ id : chr [1:680420, 1:4] "9" "9" "37" "37" ...
..- attr(*, "dimnames")=List of 2
.. ..$ : NULL
.. ..$ : chr "V1" "V2" "V3" "V4"
任何帮助都将不胜感激。
with(data, paste(...))
来使代码更加简洁。 - Richie Cottonwithin()
视为with()
的不那么受欢迎的表兄弟。我已相应地修改了我的答案。 - Dirk Eddelbuettelwithin
的不同之处吗?!(为什么它不被命名为with(..., modify=TRUE)
呢?) - smcidata$id <- paste(data[, c(1)], data[,c(2)])
,但是代码的行为与预期不符,那么这里是否有什么遗漏的地方? - Parsa