Вопрос программы R: Какой код я должен использовать для вычисления 3 столбцов в одном столбце? - PullRequest
0 голосов
/ 25 сентября 2018

Например, у нас есть:

   treetype Leaves roots
1.   1        670    25
2.   4        330    55
3.   8        880    55
4.   3        770    25

Требуемое решение:

   New value
1. 696   (1+670+25)
2. 389   (4+330+55)
3. and so on

И второй вопрос:
если значение не соответствует требуемому значению, то есть 550, затем вычислить новоезначение, использующее только листья.
-> 2. строка в требуемом решении должна быть 330.

какие-либо подсказки?

Ответы [ 2 ]

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

В качестве альтернативы предлагаем решение с использованием базы R (без дополнительных пакетов).

data <- data.frame(treetype = c(1,4,8,3),
                   Leaves = c(670, 330, 880, 770),
                   roots  = c(25,55,55,25))

limit <- 550

data$limit_test <- data$treetype + data$Leaves + data$roots > limit
data$New_value[data$limit_test] <- (data$treetype + data$Leaves + data$roots)[data$limit_test]
data$New_value[!data$limit_test] <- (data$Leaves)[!data$limit_test]
data$limit_test <- NULL
0 голосов
/ 25 сентября 2018

Это задание, подходящее для пакета dplyr, входящего в состав tidyverse:

library(tidyverse)

data <- data.frame(treetype = c(1,4,8,3),
                   Leaves = c(670, 330, 880, 770),
                   roots  = c(25,55,55,25))

limit <- 550

data <- data %>% 
    dplyr::mutate(New_value = ifelse(treetype+Leaves+roots < limit, Leaves, treetype+Leaves+roots))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...