Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.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
基于其他值列的新列值dataframe的R公式_R_Dataframe - Fatal编程技术网

基于其他值列的新列值dataframe的R公式

基于其他值列的新列值dataframe的R公式,r,dataframe,R,Dataframe,我有这个数据框: restaurant = c(1,1,1,2,2,2,3,3,3,4,4,4,5,5,5) product = c("small", "medium", "large", "small", "medium", "large", "small", "medium", "large", "small", "medium", "large", "small", "medium", "lar

我有这个数据框:

restaurant = c(1,1,1,2,2,2,3,3,3,4,4,4,5,5,5)
product = c("small", "medium", "large",
            "small", "medium", "large",
            "small", "medium", "large",
            "small", "medium", "large",
            "small", "medium", "large")
unitssold = c(30,25,59,20,10,50,10,15,20,5,6,12,25,67,100)
id = c(1,5,4,3,2,1,5,6,7,4,3,9,1,5,3)
df <- data.frame(restaurant,product,unitssold,id)
restaurant=c(1,1,1,2,2,3,3,4,4,5,5)
产品=c(“小型”、“中型”、“大型”,
“小型”、“中型”、“大型”,
“小型”、“中型”、“大型”,
“小型”、“中型”、“大型”,
“小型”、“中型”、“大型”)
UNITSOLD=c(30,25,59,20,10,50,10,15,20,5,6,12,25,67100)
id=c(1,5,4,3,2,1,5,6,7,4,3,9,1,5,3)

df带
tidyverse

df%>%
   mutate(SaleKG=case_when(
     product=="small"~unitssold*5,
     product=="medium"~unitssold*8,
     product=="large"~unitssold*10,
     T~unitssold))
   restaurant product unitssold id SaleKG
1           1   small        30  1    150
2           1  medium        25  5    200
3           1   large        59  4    590
4           2   small        20  3    100
5           2  medium        10  2     80
6           2   large        50  1    500
7           3   small        10  5     50
8           3  medium        15  6    120
9           3   large        20  7    200
10          4   small         5  4     25
11          4  medium         6  3     48
12          4   large        12  9    120
13          5   small        25  1    125
14          5  medium        67  5    536
15          5   large       100  3   1000

下面是一个使用base
R
的解决方案:

df$SaleKG <- df$unitssold * sapply(as.character(df$product), switch, small=5, medium=8, large=10)

你试过什么?您能显示您的代码吗?相关:
library("car")
df$SaleKG <- df$unitssold * recode(as.character(df$product), "'small'=5; 'medium'=8; 'large'=10")