【发布时间】:2022-01-10 08:07:50
【问题描述】:
这是我正在使用的示例数据框:
numbers <- data.frame(value=c(-5000,1,2,100,200,300,400,500, 1000, 2000, 10000, 12000))
我希望在此数据框中创建一个名为“输出”的新列,其中包含如下值:
- 如果值在 1 到 10000 之间,则与“值”列中的值相同
-10000 如果“值”列中的值大于 10000 并且
-1 如果“值”列中的值小于 1
新列“输出”中的所需输出:1,1,2,100,200,300,400,500,1000,2000,10000,10000。
我真的很想学习如何使用 for 循环、if、else if 和 else 语句来获取此输出,并尝试了以下方法:
for (i in 1:nrow (numbers$value)){
if (numbers$value[i] >10000){
numbers$output <- 10000)
} else if (numbers$value[i] < 1){
numbers$output <- 1)
} else {
numbers$output <- numbers$value)
}
}
不幸的是,这给了我一个错误,错误:“}”中的意外'}'
感谢您帮助修复此代码!
【问题讨论】:
-
这不是问题,但我建议在有两个以上
if的情况下考虑case_when。library(dplyr) numbers %>% mutate(newCol = case_when(between(value, 1,10000) ~ value, value > 10000 ~ 10000, value < 1 ~ 1))
标签: r loops for-loop if-statement