使用新名称将数字列合并到列中

时间:2013-09-15 19:26:10

标签: r numbers concatenation

令人惊讶的是,我在这里找不到这个问题。对不起,这很基本。

我有这个:

A    B    C    D     E
1    3    500  200   1 
2    3    500  200   2
3    2    500  200   1
3    3    500  200   1 

我想将A到D列组合成一个名为“ROW_NAMES”的新列

ROW_NAMES    E
13500200     1
23500200     2
32500200     1
33500200     1

2 个答案:

答案 0 :(得分:2)

您可能会感到惊讶,但有一个功能paste和一个便利版paste0

df <- within(df, ROW_NAMES <- paste0(A, B, C , D))
df[, 6:5]
#   ROW_NAMES E
# 1  13500200 1
# 2  23500200 2
# 3  32500200 1
# 4  33500200 1

或者,如果您想粘贴许多列并希望减少输入:

df$ROW_NAMES <- do.call(paste0, df[, -5])
df[, 6:5]

答案 1 :(得分:0)

qdap包中的Paste2将是解决此问题的一种方法:

## dat <- read.table(text="A    B    C    D     E
## 1    3    500  200   1 
## 2    3    500  200   2
## 3    2    500  200   1
## 3    3    500  200   1 ", header=TRUE)


library(qdap)
data.frame(ROW_NAMES=paste2(dat[, 1:4], sep=""), E=dat$E)

## > data.frame(ROW_NAMES=paste2(dat[, 1:4], sep=""), E=dat$E)
##   ROW_NAMES E
## 1  13500200 1
## 2  23500200 2
## 3  32500200 1
## 4  33500200 1