在R中为for循环和mutate奋斗

时间:2018-12-18 16:18:23

标签: r for-loop dplyr mutate

我想把头缠在R上,我确定自己在做些愚蠢的事情。

我有一个数据框,其中包含30个品牌(我的名称在列表中分别称为“品牌”)和希望插入数据框的新名称列表(称为“已知品牌”)。

我正在尝试在R数据框的新列中填充if语句的结果(使用“已知品牌”中的名称),但这会继续生成错误消息(“ {”中的意外“ {”)< / p>

我不确定我要去哪里哪里-这是我的代码:

"dependencies": {
    "@angular/animations": "~7.1.0",
    "@angular/common": "~7.1.0",
    "@angular/compiler": "~7.1.0",
    "@angular/core": "~7.1.0",
    "@angular/forms": "~7.1.0",
    "@angular/platform-browser": "~7.1.0",
    "@angular/platform-browser-dynamic": "~7.1.0",
    "@angular/router": "~7.1.0",
    "core-js": "^2.5.4",
    "rxjs": "~6.3.3",
    "tslib": "^1.9.0",
    "zone.js": "~0.8.26",
    "firebase": "^5.5.5",
    "@angular/fire": "^5.0.2"
  },

使用数据进行说明(假设3 x2列):

plot1a_df = data.frame(brands = c(1,0,2),Misc = c(0,0,0))

这个想法是以c(0,0,1)结尾的第三列(“ known_brands”)

2 个答案:

答案 0 :(得分:0)

要使用dplyr添加逻辑列:

library(dplyr)
plot1a_df %>% mutate(is_brand_known = brands %in% brand_list)

另一个带有 iris 数据集的示例。

species_list = c('setosa')
iris %>% mutate(is_setosa = Species %in% species_list)

答案 1 :(得分:0)

for (i in 1:30){
  plot1a_df[, known_cols[i]] <- ifelse(plot1a_df[,brands[i]] >1, 1, 0)
  print(plot1a_df[, known_cols[i]])
}

发现我的解决方案无需更改即可实现-尽管,仍然想知道是否可以在dplyr中合并for循环(认识到这里有很多注释,但在高层次上没有任何注释(对于这种简单理解至少可以理解) !)