小编mkr*_*mus的帖子

最简单地从虚拟变量创建因子变量

在这里选择问题的答案:

用dplyr创建一个因子变量?

没有给哈德利留下深刻的印象,对于我遇到的一些问题,后续的回答也不能很好地概括。我想知道社区是否可以通过一个更简单的示例做得更好:

  ### DATA ###
A = round(runif(200,0,1),0)
B = c(1 - A[1:100],rep(0,100))
C = c(rep(0,100), 1 - A[101:200])

dummies <- as.data.frame(cbind(A,B,C))
header <- c("Christian", "Muslim", "Athiest")

names(dummies) <- header

### ONE WAY ###
dummies$Religion <- factor(ifelse(dummies$Christian==1, "Christian",
                            ifelse(dummies$Muslim==1, "Muslim",
                                   ifelse(dummies$Athiest==1, "Athiest", NA))))
Run Code Online (Sandbox Code Playgroud)

解决方案模仿上面链接中提供给OP的结果。有没有更简单的函数将虚拟变量折叠为一个因子变量,例如STATA中的egen group函数?一个简单的班轮会很棒。

使用Akrun的解决方案和系统时间(谢谢):

set.seed(24)
A = round(runif(2e6,0,1),0)
B = c(1 - A[1:1e6],rep(0,1e6))
C = c(rep(0,1e6), 1 - A[1000001:2000000])

dummies <- as.data.frame(cbind(A,B,C))
header <- c("Christian", "Muslim", "Athiest")

names(dummies) <- header
attach(dummies)



#Alistaire
system.time({
  dummies %>% rowwise() %>% …
Run Code Online (Sandbox Code Playgroud)

r dplyr

3
推荐指数
1
解决办法
159
查看次数

dplyr mutate-ifelse 组合未创建正确的条件变量

我正在尝试使用 dplyr 中的 mutate 创建条件变量,但这似乎对我不起作用。请参阅我尝试创建的示例数据框和组合得分变量。请注意,新变量“combined.score”的第三个观测值不是 B、C 和 D 的总和。看来仅计算第一个观测值,并且该值用于每个行观测值。

我在这里缺少什么?想要一个发生这种情况的原因(没有太多替代代码或解决方案)

df <- 
  data.frame(B=c(1,0,0), 
             C=c(3,4,9), 
             D=c(1,1,0))

#A function to calculate stations whether there is a communication or process component or both
df <- df %>%
  mutate(combined.score = ifelse("B" %in% names(.) & "C" %in% names(.) & "D" %in% names(.), B + C + D,
                                 ifelse("B" %in% names(.) & "C" %in% names(.), B + C,
                                        B))) %>%
  mutate(combined.score.correct = B + C + D) 
Run Code Online (Sandbox Code Playgroud)

r dplyr

0
推荐指数
1
解决办法
1041
查看次数

标签 统计

dplyr ×2

r ×2