【问题标题】:R Looping and mutateR循环和变异
【发布时间】:2018-04-10 13:46:41
【问题描述】:

我是 R 的新手。我有一个专栏有评论 - “积极”。 “负面”等。

我想创建一个名为“范围”的新列。在本专栏中,我想根据正面/负面等写评论。如果remarks =="positive" 我想写到相应的单元格“第一圈”,如果是负面的“第二圈”。数据集=球。我正在写以下内容:

library(dplyr)
balls %>%
    mutate(ranges) %>%
    for (i in balls$sentiment) {
        if (i=="positive"){
            balls$ranges = "1st lap"
        } else if (i=="negative") {
            balls$ranges = "2nd lap"
        } else {
            balls$ranges = ""
        }
    }

但它没有工作。请问这个怎么写....有没有像我们在 Excel VBA 中那样在 for 循环中使用的偏移函数?问候,

【问题讨论】:

  • 嗨赛义德,一般来说,请解释你得到的错误。在这里,您不想尝试在 dplyr 管道内使用 for 循环。把这些东西分开。
  • Using ifelse in R的可能重复
  • 对不起。我遇到的问题是 - 在我使用 mutate 创建的新列中,我根据最后一个值得到结果。例如,如果最后一个值为正,则 Range 列中的所有单元格都变为“1st lap”。 - 希望这是有道理的......

标签: r loops for-loop


【解决方案1】:

只是扩展 cmets,我想这可能就是你所追求的?

mutate(ranges=ifelse(sentiment=="positive","1st lap", ifelse(sentiment=="negative","2nd lap","")))

【讨论】:

    【解决方案2】:

    这是一个基于case_when的解决方案:

    df <- data.frame(ID=1:6, sentiment= c("positive", "negative", "other", "positive", "bb", "positive"))
    df$ranges <- case_when(
      df$sentiment == "positive" ~"1st lap",
      df$sentiment == "negative" ~"2nd lap",
      TRUE ~ ""
    )
    

    【讨论】:

    • 这个对我来说看起来很有希望。今晚我会试一试,让你知道。我以前从未见过case_when。感谢您的提示...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-15
    • 1970-01-01
    • 2013-06-12
    • 1970-01-01
    • 2017-09-25
    • 2015-09-15
    相关资源
    最近更新 更多