Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.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,我的数据框架如下: product<-c("ab","ab","ab","ac","ac","ac") shop<-c("sad","sad","sad","sadas","fghj","xzzv") category<-c("a","a","a","b","b","b") tempr<-c(35,35,14,24,14,5) value<-c(0,0,-6,8,4,0) store<-data.frame(product,shop,category,temp

我的数据框架如下:

product<-c("ab","ab","ab","ac","ac","ac")
shop<-c("sad","sad","sad","sadas","fghj","xzzv")
category<-c("a","a","a","b","b","b")
tempr<-c(35,35,14,24,14,5)
value<-c(0,0,-6,8,4,0)
store<-data.frame(product,shop,category,tempr,value)



product  shop category tempr value
1      ab   sad        a    35     0
2      ab   sad        a    35     0
3      ab   sad        a    14    -6
4      ac sadas        b    24     8
5      ac  fghj        b    14     4
6      ac  xzzv        b     5     0
这可能是一种方法:

library(reshape2)
store2<-dcast(store, product ~ shop,value.var=value)
library(重塑2)

store2我得出了下面的答案。但是,我注意到您的记录中有相同的
产品
商店
,但不同的
时间
编号。它们将以您指定的格式相互覆盖,因此在我的示例中也是如此。您想如何处理这些记录

store2 <- matrix(NA,ncol=length(unique(store$shop)),nrow=length(unique(store$product)))
colnames(store2) <- unique(store$shop)
rownames(store2) <- unique(store$product)

for(i in 1:ncol(store)) {
  store2[store[i,'product'],store[i,'shop']] <- paste0(store[i,c('tempr')],'(',store[i,'value'],')')
}

store2如果在同一个店铺(例如
sad
)中存在产品(例如
ab
),并且在
value
列中有两行非零元素,该怎么办?它将始终是一个类似示例df的产品。感谢您的回答。在最终数据帧中,应仅显示值不同于0的tempr。其他所有内容都应为“NA”或空。一般来说,如果出现这种情况(相同的名称、相同的店铺但不同的tmpr值),则应以非零为准。您回答了原始问题,因此接受答案是公平的。我将为这个次要问题创建一个新的Q。请随时帮忙。谢谢
store2 <- matrix(NA,ncol=length(unique(store$shop)),nrow=length(unique(store$product)))
colnames(store2) <- unique(store$shop)
rownames(store2) <- unique(store$product)

for(i in 1:ncol(store)) {
  store2[store[i,'product'],store[i,'shop']] <- paste0(store[i,c('tempr')],'(',store[i,'value'],')')
}