В Looping Make Summary Table, заполняя данные на основе условных - PullRequest
0 голосов
/ 25 октября 2018

Допустим, у меня есть цикл, и в каждом цикле есть результат таблицы, подобный этому:

  #Looping Result Data
  value <- c("A1", "A2", "A3", "A4")
  value.dat <- rep("Yes", 4)
  n <- c(4, 1, 2, 4 )
  resloop <- data.frame(value, value.dat, n)

Внутри цикла я хочу иметь (в конце) сводную таблицу для каждого цикла, и таблица выглядиткак это:

Country <- rep(c("Germany", "France"), each=12)
Sectoral <- rep(c("A-A", "B-A", "B-B", "A-C", "C-B", "C-C"), times=4)
Connection <- rep(c("Yes", "No"), each=6)
Freq.Ind <- NA
t.sum<- data.frame(Country, Sectoral, Connection, Freq.Ind)

Freq.Ind должен быть заполнен значением из resloop, которое имеет наибольшее n (поэтому может быть больше одного значения, если есть такие же большие n)

Такесли сейчас в цикле:

 i<-"Germany"
 j<-"A-A"

Я хочу в первой строке Freq.Ind заполнить: A1, A4

Я пробовал что-то подобное, но что-то все еще не так :( (новичок)

 t.sum[t.sum$Country == i && t.sum$Sectoral == j && t.sum$Connection ==  "Yes", "Freq.Ind"]<- as.character(resloop$value[resloop$n==max(resloop$n)])
t.sum$Freq.Ind <- ifelse( t.sum$Country == i & t.sum$Sectoral == j & t.sum$Connection == "Yes",  as.character(resloop$value[resloop$n==max(resloop$n)]), next )


 t.sum %>% 
     mutate(Freq.Ind=replace(Freq.Ind, Country == i & Sectoral == j &  Connection == "Yes" ,as.character(resloop$value[resloop$n==max(resloop$n)])))

Спасибо

1 Ответ

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

Я получил это из испытания (пока)

as.character(resloop$value[resloop$n==max(resloop$n)])-> themax
themax <- cbind(themax)
library(stringr)
str_c(themax, collapse = ",") ->themax

t.sum %>% 
mutate(Freq.Ind=replace(Freq.Ind, Country == i & Sectoral == j & Connection == "Yes" ,themax))

Я уверен, что есть более простой способ, не стесняйтесь поделиться.

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