如何在R中使用索引列表合并两个data.frame?
假设我们有两个数据帧:A:如何在R中使用索引列表合并两个data.frame?,r,R,假设我们有两个数据帧:A: COl1 COL2 1,2... Hello 3 World 其中COL1中的每个元素都是一个数字向量。 B: 有没有一种简单的方法可以让他们变成这样: WAHHH COL2 Danny Hello Bob Hello Nice World 非常感谢您我们可以将“A”数据集中的“COl1”拆分,转换为数值,获取序列,使用“COL2”设置列表元素的名称,将堆栈转换为2列data.frame,并使用第二个数据集进行cbind cbind(B,
COl1 COL2
1,2... Hello
3 World
其中COL1中的每个元素都是一个数字向量。
B:
有没有一种简单的方法可以让他们变成这样:
WAHHH COL2
Danny Hello
Bob Hello
Nice World
非常感谢您我们可以将“A”数据集中的“COl1”拆分,转换为数值,获取序列,使用“COL2”设置列表元素的名称,将堆栈转换为2列data.frame,并使用第二个数据集进行cbind
cbind(B, setNames(stack(setNames(lapply(strsplit(A$COl1, ":"),
function(x) Reduce(`:`, as.numeric(x))), A$COL2))[2], "COL2"))
# WAHHH COL2
#1 Danny Hello
#2 Bob Hello
#3 Nice World
使现代化
如果COl1'存储为列表
或者使用长度为的rep
注意:如果“COl1”是因子类,请使用strsplitas.characterA$COl1,:l我的一般建议是不要像现在这样存储非标准化指数1:2。这将使今后所有的数据处理变得更加困难。很抱歉。它的存储方式是一个列表。我的描述有一个错误。很抱歉。它的存储方式是一个列表。
cbind(B, setNames(stack(setNames(lapply(strsplit(A$COl1, ":"),
function(x) Reduce(`:`, as.numeric(x))), A$COL2))[2], "COL2"))
# WAHHH COL2
#1 Danny Hello
#2 Bob Hello
#3 Nice World
cbind(B, setNames(stack(setNames(A$COl1, A$COL2))[2], "COL2"))
# WAHHH COL2
#1 Danny Hello
#2 Bob Hello
#3 Nice World
data.frame(B, COL2=rep(A$COL2, lengths(A$COl1)))
# WAHHH COL2
#1 Danny Hello
#2 Bob Hello
#3 Nice World