r - 使用 mutate 和 ifelse 进行条件赋值
问题描述
有了这种数据(见下文),我尝试IRISCOM
使用 mutate() 基于条件测试创建一个新列。
COMMUNE|IRIS|NB
35360|353600101|45
35361|ZZZZZZ|72
我试过了data=mutate(data, IRISCOM= ifelse(IRIS == "ZZZZZZZZZ", COMMUNE, IRIS))
它正确写入 COMMUNE,但确实1
按预期代替了 IRIS 代码。
我尝试了更多的实验,但没有成功。
解决方案
要解决此factor
问题(请参阅我上面的评论),我们可以执行以下操作
library(tidyverse)
data %>%
mutate_if(is.factor, as.character) %>%
mutate(IRISCOM = ifelse(IRIS == "ZZZZZZ", COMMUNE, IRIS))
# COMMUNE IRIS NB IRISCOM
#1 35360 353600101 45 353600101
#2 35361 ZZZZZZ 72 35361
样本数据
data <- read.table(text =
"COMMUNE|IRIS|NB
35360|353600101|45
35361|ZZZZZZ|72", header = T, sep = "|")
推荐阅读
- machine-learning - Hyperopt 更改 Trials() 对象的值;热启动 Hyperopt
- python - 替换数学公式中的点积运算符
- javascript - Chrome 在 .pause() 和 .currentTime=0 调用后隐藏视频
- c# - 由于 SDK 不匹配,MEF 加载失败
- r - 如何为尚未创建的renderUI / uiOutput块中的输入计时R闪亮中的反应输入更新?
- python - 获取符合我标准的 np.array 索引的最快方法
- python - 在自定义 Django 管理面板中使用数据库中可用的现有销售记录显示仪表板图表
- c# - 在 JsonConvert 结果 C# 上调用方法
- symfony - Symfony 4:使用 jms 序列化程序的 MaxDepth 注释
- c# - 如何将多个图像文件夹加载到管道中?