Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将一个数据帧的元素映射到R中的另一个数据帧?_R - Fatal编程技术网

如何将一个数据帧的元素映射到R中的另一个数据帧?

如何将一个数据帧的元素映射到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

我有以下两个数据帧。 数据帧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(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=“(?A
data.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单元格,此方法是否也有效?@NickL
NULL
不能存在于向量中。也许您的意思是
“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