【问题标题】:Creating new variable by using a previous one使用前一个变量创建新变量
【发布时间】:2021-05-18 11:32:55
【问题描述】:

您好,我正在学习如何使用 R 语言。我有一个数据集(df),它有 3 个分类变量(会话、ID、评估)。我正在尝试创建一个新变量(Total Assessed),该变量由每个会话的 Assessed 列中“Y”的 nº 的总和/计数组成。我尝试使用命令 count、sum、filter、mutate 来尝试将新变量“Total Assessed”添加到我的数据框中,但我没有达到我想要的结果。这个image 显示了我想要的结果。(它也是它的样子,但它没有最后一个变量)。你能帮我么? 以下是我尝试使用的命令,但由于这个或其他原因不起作用......我觉得我接近答案了,但是以错误的顺序使用命令或错过了一个步骤。

> df %>% group_by(Session) %>% filter(Assessed == "Y") # it didn't gave me the count of "Y"
> df <- df %>% group_by(Session, Assessed) %>% filter(Assessed == "Y") # it didn't gave me the count of "Y"

> df <- df %>% group_by(Session, Assessed) %>% filter(Assessed == "Y") %>% tally() # This was close, beacuse it counted the "Y" per session. However, it completly ignored sessions that only had "N". I need this sessions to appear has "0" in "Total Assessed". 

【问题讨论】:

  • 您使用什么编程语言?请添加您的代码示例,即使它无法正常工作,以便我们查看您的尝试。
  • 你是对的,对不起,我忘了提到我正在使用 R。我没有包含命令,因为我尝试了如此不同的组合,我认为它可能会更令人困惑。我现在包括了我认为接近正确答案(或答案之一)的那些。你觉得这样好吗?感谢您的时间和帮助:)

标签: r count sum dplyr


【解决方案1】:

找到了!

诀窍是临时将 Assessed 变量转换为 nmeric 变量。然后使用 group_by、mutate 和 sum 命令(我不确定,但我认为前两个属于 dplyr 包)。然后我可以再次将 Assessed 归还给角色。

> df$Assessed <- as.numeric(df$Assessed)
> df %>% df <- group_by (Session) %>% mutate (Total Assessed = sum(Assessed))
> df$Assessed <- as.character(df$Assessed)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-25
    • 1970-01-01
    相关资源
    最近更新 更多