Как перебрать столбец и назначить значение на основе другого столбца без для l oop? - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь эффективно присвоить значение столбцу на основе другого столбца, но без значения для l oop, поскольку это занимает слишком много времени.

Я делаю что-то вроде этого: Если значение контрольного столбца больше определенного случайного числа, я назначаю 1 новому столбцу. В противном случае присвойте 0. Не можете найти лучший способ сделать это без al oop. Я пробовал dplyr и case_when, но это не повторялось по каждой строке.

Спасибо!

for (i in 1:nrow(data)) {
  if (data$value[i] > runif(1, 0, 1.7)) {
     temp$newValue[i] <- 1
  } else{
     temp$newValue[i] <- 0
  }
}

Ответы [ 2 ]

0 голосов
/ 10 марта 2020

Решает ли это вашу проблему?

ДАННЫЕ :

set.seed(1)
df <- data.frame(
  refcol = rnorm(10)
)

randvalue <- 0

РЕШЕНИЕ :

df$newcol <- ifelse(df$refcol > randvalue, 1, 0)

РЕЗУЛЬТАТ :

df
       refcol newcol
1   0.2352207      1
2  -0.3307359      0
3  -0.3116238      0
4  -2.3023457      0
5  -0.1708760      0
6   0.1402782      1
7  -1.4974267      0
8  -1.0101884      0
9  -0.9484756      0
10 -0.4939622      0
0 голосов
/ 10 марта 2020
c0=data.frame(c(1,4,6,3,7,3),c(2,8,2,4,9,4))
names(c0)=c("A","B")

c0$C=ifelse(c0[,"A"]>runif(1,0,1.7),1,0)
c0

Я не уверен, правильно ли я вас понимаю. Пожалуйста, прокомментируйте, если у меня возникло недопонимание.

A
<dbl>
B
<dbl>
C
<dbl>
1   2   0       
4   8   1       
6   2   1       
3   4   1       
7   9   1       
3   4   1       
6 rows

Вот как я использую A для генерации C

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...