如何解决使用现有列进行Dplyr变异
我在R中有这个DF:
species <- c("dac","dac","theo","syl")
label <- c("dac1","dac2","gna","gni")
df <- data.frame(species,label)
我要在其中创建一个新列(称为pop):
- 如果物种==“ dac”,则将相应的值放在“标签”列中
- 否则,它将在“种类”列中输入相应的值
结果如下:
pop <- c("dac1","syl")
df2 <- data.frame(species,label,pop)
不幸的是,我无法通过if else和mutate来使这个工作正常。 你能帮忙吗?
谢谢!
M
解决方法
她是基础R选项
within(df,pop <- ifelse(species == "dac",label,species))
或
within(df,pop <- df[cbind(1:nrow(df),ifelse(species == "dac",2,1))])
给出
species label pop
1 dac dac1 dac1
2 dac dac2 dac2
3 theo gna theo
4 syl gni syl
,
尝试一下:
library(dplyr)
species <- c("dac","dac","theo","syl")
label <- c("dac1","dac2","gna","gni")
df <- data.frame(species,label)
pop <- c("dac1","syl")
df2 <- data.frame(species,pop)
mutate(df,pop = if_else(species == "dac",species))
#> species label pop
#> 1 dac dac1 dac1
#> 2 dac dac2 dac2
#> 3 theo gna theo
#> 4 syl gni syl
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。