【发布时间】:2020-05-19 04:04:30
【问题描述】:
我想:
- 按因素分组(站点、位置);
- 如果因子 'Pos' == "A",则将所选值 ("a") 分配给新列 ('Treat1') 中的相同行;
- 如果因子 'Pos' == "B",则将所选值 ("b") 分配给新列 ('Treat1') 中的相同行;
- 如果因子 'Pos' == "AT",则为新列 ('Treat 1') 的每个第一行分配一个值 ("a"),其中 'Pos' == A,第二个值 ("b" ) 到同一行的每隔一行。
到目前为止,我只知道如何编写前 3 个点,但这个循环仍然没有按我的预期执行。它仅填充新列 Treat1 中的最后一行。 有什么想法吗?
对解决此问题的不同方法持开放态度,但请记住,我是 R 初学者。
复制:
yow <- c(1:6)
Pos <- c("A", "B", "A", "AT", "AT", "B")
df <- as.data.frame(Pos, yow)
df$Site <- c("low", "low", "high", "high", "high", "high")
df$Treat1 <- NA
for (i in nrow(df %>% group_by(Site)){
if(df$Pos[i] == "A"){
df$Treat1[i] <- "a"
}
else {
if(df$Pos[i] == "B"){
df$Treat1[i] <- "b"
}
}
}
我期待/正在寻找:
- 网站位置1
- 低A a
- 低 B b
- 高A a
- AT a 高
- 高 AT b
- 高 B b
这个答案很酷,并且执行了我的 ifelse 循环失败的前 3 个步骤,但它并没有说明第 4 个问题! R Create new column of values based on the factor levels of another column
【问题讨论】:
标签: r loops if-statement dplyr levels