我们已经完成了一项任务,我们必须创建2个变量,均匀分布在0和1之间,运气和情报,以及2000个观察结果:
Intelligence <- runif(2000, 0, 1)
Luck <- runif <- runif(2000, 0, 1)
然后我们必须创建一个大学变量,其中University = 1
如果Luck + Intelligence > 1
,则University = 0
。
我的直觉是先创建一个函数:
University2 <- function(a = Intelligence, b = Luck, nPoints = 2000){
y = a + b
return(y)
}
它有2000个观察值,并将y定义为+ b,其中a =智能,b =运气。我不是所有经历过R的人,所以我的问题是我的决赛&#34;大学&#34;值,我需要告诉R:University = 1
,如果a + b&gt; 1。
答案 0 :(得分:3)
University <- floor(Intelligence+Luck)
答案 1 :(得分:2)
你的意思是:
University <- ifelse(Intelligence+Luck > 1, 1, 0)
答案 2 :(得分:0)
使用dplyr
将简化您的工作流程并使您的代码更易于阅读,我建议case_when
(就像SQL CASE WHEN那样非常有用);
library(tidyverse)
# make a tibble of your data
df <- data.frame(Intelligence, Luck)
df <- as.tibble(df)
df <-
df %>%
# new column, adds intelligence + Luck
mutate (intelligence_luck_sum = Intelligence + Luck) %>%
# combine 'case_when' and 'mutate', create new variable 'University'
# and perform the case when test for 2 scenarios
mutate (
University = case_when(
intelligence_luck_sum > 1 ~ '1'
, intelligence_luck_sum < 1 ~ '0')) %>%
# remove the 'intelligence' variable
select(-intelligence_luck_sum)