【问题标题】:Create new variable in R based on existing variable [duplicate]根据现有变量在R中创建新变量[重复]
【发布时间】:2020-11-22 13:14:11
【问题描述】:

我对 R 有一个新问题 - 我目前正在自学如何将它用于我的心理学学士论文,如果我的问题真的很幼稚,请多多包涵。

现在我正在尝试基于已经存在的变量创建一个新变量。现有的有 4 种不同的表达方式:T1、T2、T3 和 T4。它们可能看起来像这样:

subject       scenario
1             T1
2             T3
3             T3
4             T2
5             T2
6             T4

我尝试创建的新变量应提供以下值:对于T1T2,新变量应为personal,对于T3T4,应为impersonal。 因此,输出数据应如下所示:

subject      scenario    personal force
1            T1          personal
2            T3          impersonal
3            T3          impersonal
4            T2          personal
5            T2          personal
6            T4          impersonal

我可以创建什么代码来做到这一点? 任何帮助将不胜感激。谢谢!:)

【问题讨论】:

  • TRY: pd %>% mutate(personal_force = ifelse(scenario %in% c('T1','T2'), 'personal', 'impersonal')) 其中'pd'是你的数据框

标签: r


【解决方案1】:

一个选项可以是:

#Code
df$NewVar <- ifelse(df$scenario %in% c('T1','T2'),'personal','impersonal')

另一个带有索引的选项(如果你只想要类personal/impersonal的新变量):

#Code 2
df$NewVar <- 'impersonal'
df$NewVar[df$scenario %in% c('T1','T2')] <- 'personal'

两种情况下的输出:

df
  subject scenario     NewVar
1       1       T1   personal
2       2       T3 impersonal
3       3       T3 impersonal
4       4       T2   personal
5       5       T2   personal
6       6       T4 impersonal

也可以使用dplyrmutate() 并传递ifelse() 来完成,但您必须安装该软件包并了解其功能。作为R 的初学者,您可以先从base R 开始,然后升级到dplyr 样式。

【讨论】:

  • 谢谢!你的第一个推荐很有魅力。
  • @CarolinSchips 太好了!继续学习掌握R :) 如果您有任何与某些项目相关的陷阱,请告诉我。我过去常常教授定制的 R 编程课程来解决关键问题。如果您有兴趣随时告诉我:)
【解决方案2】:

另一种方法是使用逻辑子集来创建新列。

df$personal_force <- c('impersonal', 'personal')[df$scenario %in% c('T1', 'T2') + 1]
df

#  subject scenario personal_force
#1       1       T1       personal
#2       2       T3     impersonal
#3       3       T3     impersonal
#4       4       T2       personal
#5       5       T2       personal
#6       6       T4     impersonal

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    • 2019-04-16
    • 2021-12-03
    • 2019-03-01
    • 2017-01-07
    • 2021-01-04
    相关资源
    最近更新 更多