【问题标题】:assign multiple categorical values to series of data frame variables in r将多个分类值分配给 r 中的一系列数据框变量
【发布时间】:2014-10-09 04:04:01
【问题描述】:

假设我有以下数据输入到 R

G <- c(1,1,0,0,0,0,0,0,0) 
H <- c(0,1,1,0,0,0,0,0,0) 
I <- c(0,0,0,0,1,1,0,0,0) 
J <- c(0,0,0,1,0,1,0,0,0) 
K <- c(0,0,0,0,0,0,1,1,0) 
L <- c(0,0,0,0,0,0,0,1,1)

list <- data.frame(G,H,I,J,K,L)

我要分配

  • 'a' 值表示 1 出现在 G 或 H 中或同时出现在两者中的任何观察值
  • 'b' 表示 1 出现在 I 和 J 中的一个/两个中的观察值。
  • 'c' 表示 1 出现在 K 和 L 中的一个/两个中。

【问题讨论】:

  • Assing 的意思是要将一行中的所有条目转换为,例如,“a”,或者仅将那些有 1 或有 0 的条目转换为“a”?你有没有尝试过任何不起作用的方法?
  • 我一直在尝试使用 ifelse 命令,所以最终我想在 'list' 中创建一个额外的变量,用于说明每个观察值对应的 a、b、c 值
  • 你的意思是每一行?
  • 是的,如果我们给它分配“类别”名称(列表)=(G,H,I,J,K,L,类别)

标签: r variable-assignment multiple-variable-return


【解决方案1】:

这是一个简单的解决方案,方法是创建一个变量,然后使用子集为其赋值。这足以满足您的目的吗?

list$Z <- NA
list$Z[list$G|list$H] <- "a"
list$Z[list$I|list$J] <- "b"
list$Z[list$K|list$L] <- "c" 
list

编辑: 根据David Arenburg 的建议,通过使用within(),代码变得更清晰、可读性更好(并且可能更高效):

list$Z <- NA
within(list, Z[G|H]<-"a"; Z[I|J]<-"b"; Z[K|L]<-"c")

【讨论】:

  • 我认为使用within会非常有效
  • 感谢您的评论。我添加了一行代码,使用within() 使它更漂亮。
猜你喜欢
  • 2014-10-09
  • 2020-05-18
  • 2018-10-18
  • 1970-01-01
  • 1970-01-01
  • 2012-08-14
  • 2021-07-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多