你好,我正在尝试改变值(例如将千克更改为吨)并在原始数据集中替换它们,但它似乎没有留在原始数据集中。
这是一个样本数据集供参考。
<表类>
国家
类型数量 tbody><<tr>公斤 23132 B公斤 34235 C吨 700 表类>
您也可以使用case_when()
,这是dplyr的相当于SQL的CASE WHEN
。基本上它允许你对多个if_else()
语句进行矢量化。下面,第一个条件是if语句,然后TRUE ~
是else语句
df <- data.frame(Country = c('A', 'B', 'C'),
Type = c("Kilograms", "Kilograms", "Tonnes"),
Quantity = c(23132, 34235, 700))
df <- df %>%
mutate(Quantity = case_when(Type == 'Kilograms' ~ Quantity/1000,
TRUE ~ Quantity),
Type = case_when(Type == 'Kilograms' ~ 'Tonnes',
TRUE ~ 'Tonnes')
)
使用ifelse
函数根据其他条件修改值。这个函数在tidyverse环境下也能很好地工作。
不要忘记将结果重新赋值给原始变量,因为管道操作符不会改变输入数据
library(dplyr)
df = df %>% mutate(Quantity = ifelse(Type=="Kilograms",Quantity/1000,Quantity),
Type = ifelse(Type=='Kilograms','Tonnes',Type))