在不创建 "variable" 和 "value" 的情况下将列转换为行
Transform columns to row without create "variable" and "value"
我见过很多相似但不相同的转换示例。希望没有错。
我想改造这个DF:
Reference Amount Reference.2 Amount.2
1: 20171201 100,00 € 20171204 110,00 €
类似的事情:
Reference Amount
1: 20171201 100,00 €
2: 20171204 110,00 €
谢谢。
如果您真的只是处理成对的列并且您不需要 "variable" 或 "value" 列,那么也许您可以这样做:
matrix(c(t(df)), ncol = 2, byrow = TRUE)
## [,1] [,2]
## [1,] "20171201" "100,00€"
## [2,] "20171204" "110,00€"
## [3,] "20171202" "101,00€"
## [4,] "20171205" "110,00€"
从那里,转换为 data.frame
或 data.table
或 tbl
或您喜欢使用的任何内容....
但是,我不知道你为什么不这样做:
library(data.table)
melt(as.data.table(df), measure.vars = patterns("Reference", "Amount"),
value.name = c("Reference", "Amount"))[, variable := NULL][]
# Reference Amount
# 1: 20171201 100,00€
# 2: 20171202 101,00€
# 3: 20171204 110,00€
# 4: 20171205 110,00€
示例数据(来自@Florian 删除的答案):
df = read.table(text='Reference Amount Reference.2 Amount.2
1: 20171201 100,00€ 20171204 110,00€
2: 20171202 101,00€ 20171205 110,00€',header=T)
我见过很多相似但不相同的转换示例。希望没有错。
我想改造这个DF:
Reference Amount Reference.2 Amount.2
1: 20171201 100,00 € 20171204 110,00 €
类似的事情:
Reference Amount
1: 20171201 100,00 €
2: 20171204 110,00 €
谢谢。
如果您真的只是处理成对的列并且您不需要 "variable" 或 "value" 列,那么也许您可以这样做:
matrix(c(t(df)), ncol = 2, byrow = TRUE)
## [,1] [,2]
## [1,] "20171201" "100,00€"
## [2,] "20171204" "110,00€"
## [3,] "20171202" "101,00€"
## [4,] "20171205" "110,00€"
从那里,转换为 data.frame
或 data.table
或 tbl
或您喜欢使用的任何内容....
但是,我不知道你为什么不这样做:
library(data.table)
melt(as.data.table(df), measure.vars = patterns("Reference", "Amount"),
value.name = c("Reference", "Amount"))[, variable := NULL][]
# Reference Amount
# 1: 20171201 100,00€
# 2: 20171202 101,00€
# 3: 20171204 110,00€
# 4: 20171205 110,00€
示例数据(来自@Florian 删除的答案):
df = read.table(text='Reference Amount Reference.2 Amount.2
1: 20171201 100,00€ 20171204 110,00€
2: 20171202 101,00€ 20171205 110,00€',header=T)