【问题标题】:creating a new variable depending on value of 2 others in R-code根据 R 代码中其他 2 个的值创建一个新变量
【发布时间】:2015-10-01 15:48:03
【问题描述】:

我想创建一个新的分类变量来衡量学生是否是第一代大学生。

变量 X 是母亲的教育程度 1 = 低于 HS,2 = HS 或 GED,3 = BS/BA,4 = 硕士,5 = PHD

变量 Y 是父亲的教育程度,测量方式相同。

我想创建变量 Z,这样如果父母双方都没有收到超过学士学位或以上的任何东西,那么变量 Z 将为 1,如果不是,变量 Z 将为 0。

非常感谢!

【问题讨论】:

  • 类似DF$Z <- with(DF, +( max(X,Y) <= 3 ))
  • @Frank 我猜你应该使用pmax 而不是max。另一种简洁的方式是DF$Z <-+(do.call(pmax,df)<=3)
  • @nicola,这行得通。我正在修改@Frank,我写了DF$Z <- 0 + (apply(DF, 1, max ) <= 3)
  • @MartínEscarrá apply 应避免使用,因为它比 pmax 等矢量化函数慢。
  • @nicola 是的,你是对的。

标签: r variables


【解决方案1】:

很难在没有具体示例的情况下给出具体答案,但假设 X 和 Y 是 data.frame 中的列并以数字方式处理(即,而不是因子),这应该可行:

df <- data.frame(X=sample(1:5, 10, replace=T), Y = sample(1:5, 10, replace=T))
sapply(1:nrow(df), function(i) as.numeric(max(df$X[i], df$Y[i]) <= 3))

【讨论】:

    猜你喜欢
    • 2021-10-15
    • 2022-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多