R 有没有一种方法可以转换不同的列名
例如,有没有一种方法可以用不同的列名转置dataframeR 有没有一种方法可以转换不同的列名,r,R,例如,有没有一种方法可以用不同的列名转置dataframe Col A Col B Table1 Date Table1 Country Table2 Name Table2 Date Table3 ID Table3 Place 所需输出(具有相同名称的列应与日期一样在同一列中对齐) 似乎要获得所需的输出,您必须分别处理ColB值的>1个实例和只有1个实例的情况 备选案文1: library(data.table) setDT(df) df[, single := .N =
Col A Col B
Table1 Date
Table1 Country
Table2 Name
Table2 Date
Table3 ID
Table3 Place
所需输出(具有相同名称的列应与日期一样在同一列中对齐)
似乎要获得所需的输出,您必须分别处理
ColB
值的>1个实例和只有1个实例的情况
备选案文1:
library(data.table)
setDT(df)
df[, single := .N == 1L, ColB]
df[, b_id := frank(ColB, ties.method = 'dense')]
out <-
merge(
dcast(df[single == F], ColA ~ b_id, value.var = 'ColB'),
dcast(df[single == T], ColA ~ rowid(ColA), value.var = 'ColB'),
by = 'ColA',
all = T
)
setnames(out, replace(paste0('Col', seq(0, ncol(out) - 1)), 1, names(out)[1]))
out
# ColA Col1 Col2 Col3
# 1: Table1 Date Country <NA>
# 2: Table2 Date Name <NA>
# 3: Table3 <NA> ID Place
库(data.table)
setDT(df)
df[,单个:=.N==1L,ColB]
df[,b_id:=frank(ColB,ties.method='dense')]
out似乎要获得所需的输出,您必须分别处理ColB
值的>1个实例和只有1个实例的情况
备选案文1:
library(data.table)
setDT(df)
df[, single := .N == 1L, ColB]
df[, b_id := frank(ColB, ties.method = 'dense')]
out <-
merge(
dcast(df[single == F], ColA ~ b_id, value.var = 'ColB'),
dcast(df[single == T], ColA ~ rowid(ColA), value.var = 'ColB'),
by = 'ColA',
all = T
)
setnames(out, replace(paste0('Col', seq(0, ncol(out) - 1)), 1, names(out)[1]))
out
# ColA Col1 Col2 Col3
# 1: Table1 Date Country <NA>
# 2: Table2 Date Name <NA>
# 3: Table3 <NA> ID Place
库(data.table)
setDT(df)
df[,单个:=.N==1L,ColB]
df[,b_id:=frank(ColB,ties.method='dense')]
要将答案标记为已接受,请单击答案旁边的复选标记将其从灰色变为已填写。要将答案标记为已接受,请单击答案旁边的复选标记将其从灰色变为已填写。
library(data.table)
setDT(df)
df[, single := .N == 1L, ColB]
df[, b_id :=
interaction(single, fifelse(single, rowid(ColA), frank(ColB, ties.method = 'dense')))]
dcast(df, ColA ~ paste0('Col', as.integer(b_id)), value.var = 'ColB')
# ColA Col2 Col3 Col4
# 1: Table1 <NA> Date Country
# 2: Table2 Name Date <NA>
# 3: Table3 ID <NA> Place
df <- fread('
ColA ColB
Table1 Date
Table1 Country
Table2 Name
Table2 Date
Table3 ID
Table3 Place
')