выбор определенных строк столбцов согласно условию if-else - PullRequest
0 голосов
/ 13 сентября 2018

Применяя логику, как показано ниже:

константа = 5

если count <= константа, вывести строки из значения 1, один раз считать> константу, вывести строки из значения 2.

не используется индексирование - нарезка, нужна логика, так как константа может быть изменена в будущем.

Ожидаемый результат:

count  value_1    value_2     output
1   0.001138636 0.081404856 0.001138636
2   0.001157974 0.089056417 0.001157974
3   0.00117294  0.098103887 0.00117294
4   0.00124517  0.109297111 0.00124517
5   0.001369958 0.123153932 0.001369958
6   0.001494746 0.141047465 0.141047465
7   0.001619535 0.165075631 0.165075631
8   0.001744323 0.198308568 0.198308568
9   0.001771541 0.248464171 0.248464171
10  0.001713549 0.331921807 0.331921807

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Используя data.table, вы можете попробовать:

library(data.table)
setDT(df)[,output := ifelse(count <= 5, value_1,value_2)]

df
#returns
    count     value_1    value_2      output
 1:     1 0.001138636 0.08140486 0.001138636
 2:     2 0.001157974 0.08905642 0.001157974
 3:     3 0.001172940 0.09810389 0.001172940
 4:     4 0.001245170 0.10929711 0.001245170
 5:     5 0.001369958 0.12315393 0.001369958
 6:     6 0.001494746 0.14104747 0.141047465
 7:     7 0.001619535 0.16507563 0.165075631
 8:     8 0.001744323 0.19830857 0.198308568
 9:     9 0.001771541 0.24846417 0.248464171
10:    10 0.001713549 0.33192181 0.331921807
0 голосов
/ 13 сентября 2018

Мы можем использовать ifelse

df$output <- with(df, ifelse(count <= constant, value_1, value_2))
df$output
#[1] 0.001138636 0.001157974 0.001172940 0.001245170 0.001369958 0.141047465 0.165075631 0.198308568
#[9] 0.248464171 0.331921807

Или с tidyverse

library(tidyverse)
df %>%
     mutate(output = case_when(count <= constant ~ value_1,
                               TRUE ~ value_2))

data

df <-  structure(list(count = 1:10, value_1 = c(0.001138636, 0.001157974, 
0.00117294, 0.00124517, 0.001369958, 0.001494746, 0.001619535, 
0.001744323, 0.001771541, 0.001713549), value_2 = c(0.081404856, 
0.089056417, 0.098103887, 0.109297111, 0.123153932, 0.141047465, 
 0.165075631, 0.198308568, 0.248464171, 0.331921807)), row.names = c(NA, 
-10L), class = "data.frame")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...