library(reshape2)
data %>%
melt(., id.vars = "food_groups", measure_vars=c('PC1','PC2','PC3','PC4','PC5','PC6','PC7','PC8','PC9','PC10')) %>%
filter(value != 375)
возвращает:
food_groups variable value
1 food2 PC1 92
2 food3 PC1 801
3 food4 PC1 398
4 food5 PC1 238
5 food6 PC1 213
6 food7 PC1 281
7 food8 PC1 1031 ....
Вы заметили, что комбинация PC1-food1 отфильтрована.
Затем вы можете разделить это на список таблиц:
library(reshape2)
data %>%
melt(., id.vars = "food_groups", measure_vars=c('PC1','PC2','PC3','PC4','PC5','PC6','PC7','PC8','PC9','PC10')) %>%
filter(value != 375) %>%
group_split(variable) -> mylist
После этого:
# name list elements
names(mylist) <- c('PC1','PC2','PC3','PC4','PC5','PC6','PC7','PC8','PC9','PC10')
# assign to global environment
list2env(mylist,globalenv())
# now you have:
> ls()
[1] "data" "data.matrix" "i" "mylist" "PC1"
[6] "PC10" "PC2" "PC3" "PC4" "PC5"
[11] "PC6" "PC7" "PC8" "PC9" "wt.values"
Изменить: Ответ @Ronak Shah ниже представлен единый подход для создания списка таблиц, разделенных в соответствии с P C. После выполнения его единственной строки вам нужно только позвонить list2env()
, чтобы получить желаемый результат. Если кому-то нравится краткость, предпочтительнее его ответ.