我有一个数据框,像这样;
method SOC
walkley black 0.5
walkley black 1.2
combustion 0.8
combustion 0.7我想创建一个名为new_SOC的新专栏。我想将SOC乘以10,并将其放入new_SOC中。我想这样做只是为了让walkley black方法和其他方法变得简单。
我写了以下代码,但没有成功:非常感谢您的帮助。
## make an empty column called new_SOC
df$new_SOC <- c("")
## Make a loop to calculate the new column with condition.
for (i in 1:length(df)){
if (df$method == " walkley black") {
df$new_SOC = df$SOC*10
}
else{df$new_SOC == "NA"}
}发布于 2021-01-16 15:36:34
您可以使用ifelse:
df$new_SOC <- ifelse(df$method == "walkley black", df$SOC*10, NA)发布于 2021-01-16 18:24:44
使用dplyr,您可以:
library(dplyr)
df <- df %>%
mutate(new_SOC = ifelse(method == " walkley black", 10*SOC, NA))但是,如果walkley black是以不同的方式编写的:
library(dplyr)
library(stringr)
df <- df %>%
mutate(new_SOC = ifelse(str_detect(method,"walkley black"), 10*SOC, NA))发布于 2021-01-17 03:31:09
我们也可以使用case_when
library(dplyr)
df1 <- df %>%
mutate(new_SOC = case_when(method == "walkley black" ~ SOC * 10))或者使用base R
i1 <- df$method == 'walkley black"
df$new_SOC[i1] <- df$SOC[i1] * 10https://stackoverflow.com/questions/65747420
复制相似问题