если еще условие для строк столбцов - PullRequest
0 голосов
/ 14 сентября 2018

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

константа = 5

если число <= константа, вывести строки из значения 1 [1: 5], один раз счет> константы, вывести строки из значения2 [1: 5].

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

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

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.081404856
7   0.001619535 0.165075631 0.089056417
8   0.001744323 0.198308568 0.098103887
9   0.001771541 0.248464171 0.109297111
10  0.001713549 0.331921807 0.123153932
11  0.001592526 0.001197517 0.141047465 
12  0.001342363 0.00159737  0.165075631 

здесь в столбце вывода - первый 1:5 строк от value_1, а остальные от value_2 - 1: 7

1 Ответ

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

Вот вариант использования tidyverse и некоторого изменения формы:

df = read.table(text = "
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.081404856
7   0.001619535 0.165075631 0.089056417
8   0.001744323 0.198308568 0.098103887
9   0.001771541 0.248464171 0.109297111
10  0.001713549 0.331921807 0.123153932
11  0.001592526 0.001197517 0.141047465 
12  0.001342363 0.00159737  0.165075631 
", header=T)

df$output = NULL

library(tidyverse)

# input constant
constant = 5

# calculate rest of values needed for value_2
nn = nrow(df) - constant

df %>%
  gather(x,y,-count) %>%
  group_by(x) %>%
  filter((x == "value_1" & row_number() <= constant) | (x == "value_2" & row_number() <= nn)) %>%
  pull(y) -> df$output

df 

#    count     value_1     value_2      output
# 1      1 0.001138636 0.081404856 0.001138636
# 2      2 0.001157974 0.089056417 0.001157974
# 3      3 0.001172940 0.098103887 0.001172940
# 4      4 0.001245170 0.109297111 0.001245170
# 5      5 0.001369958 0.123153932 0.001369958
# 6      6 0.001494746 0.141047465 0.081404856
# 7      7 0.001619535 0.165075631 0.089056417
# 8      8 0.001744323 0.198308568 0.098103887
# 9      9 0.001771541 0.248464171 0.109297111
# 10    10 0.001713549 0.331921807 0.123153932
# 11    11 0.001592526 0.001197517 0.141047465
# 12    12 0.001342363 0.001597370 0.165075631
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...