如何将一个数据帧的元素映射到R中的另一个数据帧?
我有以下两个数据帧。 数据帧1: 篮子 苹果 香蕉 柑橘 1. C01 A03 二氧化碳 2. A01 B02 二氧化碳 3. B01 A02 B03如何将一个数据帧的元素映射到R中的另一个数据帧?,r,R,我有以下两个数据帧。 数据帧1: 篮子 苹果 香蕉 柑橘 1. C01 A03 二氧化碳 2. A01 B02 二氧化碳 3. B01 A02 B03 我们使用“Basket”以外的列将数据重塑为“long”格式,通过在非数字部分和数字部分的交界处拆分将“value”列一分为二,将“name”列与“Basket”合并,并使用pivot\u wider将其重塑为“wide” library(dplyr) library(tidyr) df1 %>% pivot_longer(col
我们使用“Basket”以外的列将数据重塑为“long”格式,
通过在非数字部分和数字部分的交界处拆分将“value”列一分为二,将“name”列与“Basket”合并,并使用pivot\u wider将其重塑为“wide”
library(dplyr)
library(tidyr)
df1 %>%
pivot_longer(cols = -Basket) %>%
separate(value, into = c('col1', 'col2'),
sep="(?<=\\D)(?=\\d)", convert = TRUE) %>%
unite(name, name, Basket, sep="") %>%
arrange(col2, col1) %>%
pivot_wider(names_from = col2, values_from = name)
库(dplyr)
图书馆(tidyr)
df1%>%
枢轴长度(cols=-篮)%>%
将(值)分隔为=c('col1','col2'),
sep=“(?Adata.table
选项使用dcast
+melt
dcast(
melt(setDT(df1),
id.var = "Basket"
)[
,
variable := paste0(variable, Basket)
],
gsub("\\d", "", value) ~ gsub("\\D", "", value),
value.var = "variable"
)
给予
您不需要rstudio标记。另外,请以可读格式共享您的数据,以便其他人可以提供帮助。到目前为止,您尝试了什么?非常感谢@akrun!如果原始数据帧可能已扩展,并且还有一些空单元格或N/a单元格,此方法是否也有效?@NickLNULL
不能存在于向量中。也许您的意思是“NULL”
而不是NULL
,NA
没有
。如果有NA
,那么我们在透视中使用值\u drop\u NA=TRUE
来删除那些NA元素
df1 <- structure(list(Basket = 1:3, Apple = c("C01", "A01", "B01"),
Banana = c("A03", "B02", "A02"), Citrus = c("C02", "C03",
"B03")), class = "data.frame", row.names = c(NA, -3L))
dcast(
melt(setDT(df1),
id.var = "Basket"
)[
,
variable := paste0(variable, Basket)
],
gsub("\\d", "", value) ~ gsub("\\D", "", value),
value.var = "variable"
)
value 01 02 03
1: A Apple2 Banana3 Banana1
2: B Apple3 Banana2 Citrus3
3: C Apple1 Citrus1 Citrus2