Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 根据值获取所有可能的总和和输出列表_R_Combinations - Fatal编程技术网

R 根据值获取所有可能的总和和输出列表

R 根据值获取所有可能的总和和输出列表,r,combinations,R,Combinations,我有一个包含两列的数据框:LOOKUP,其中包含一个索引编号,另一列,VALUE中包含一个与该编号关联的字符串: LOOKUP VALUE 1000 Apple 100 Banana 10 Grape 1 Orange 以R代码显示如下: dat <- data.frame(LOOKUP= c(1000, 100, 10, 1), VALUE = c("Apple", "Banana", "Gr

我有一个包含两列的数据框:
LOOKUP
,其中包含一个索引编号,另一列,
VALUE
中包含一个与该编号关联的字符串:

LOOKUP    VALUE
1000      Apple
100       Banana
10        Grape
1         Orange
以R代码显示如下:

dat <- data.frame(LOOKUP= c(1000, 100, 10, 1),
                  VALUE = c("Apple", "Banana", "Grape", "Orange"))

一种涉及
purr
tibble
dplyr
tidyr
的解决方案可以是:

map(.x = 1:nrow(dat), ~ combn(dat$VALUE, .x, paste, collapse = ",") %>%
     enframe()) %>%
 bind_rows() %>%
 rowid_to_column() %>%
 separate_rows(value) %>%
 left_join(dat, by = c("value" = "VALUE")) %>%
 group_by(rowid) %>%
 summarise(comb = toString(value),
           sum = sum(LOOKUP))

  rowid comb                           sum
   <int> <chr>                        <dbl>
 1     1 Apple                         1000
 2     2 Banana                         100
 3     3 Grape                           10
 4     4 Orange                           1
 5     5 Apple, Banana                 1100
 6     6 Apple, Grape                  1010
 7     7 Apple, Orange                 1001
 8     8 Banana, Grape                  110
 9     9 Banana, Orange                 101
10    10 Grape, Orange                   11
11    11 Apple, Banana, Grape          1110
12    12 Apple, Banana, Orange         1101
13    13 Apple, Grape, Orange          1011
14    14 Banana, Grape, Orange          111
15    15 Apple, Banana, Grape, Orange  1111
map(.x=1:nrow(dat),~combn(dat$VALUE,.x,粘贴,折叠=“,”)%>%
enframe())%>%
绑定_行()%>%
rowid_到_列()%>%
单独的_行(值)%>%
左联合(dat,by=c(“值”=“值”))%>%
分组依据(rowid)%>%
总结(comb=toString(值),
总和=总和(查找))
罗维德梳和
1苹果1000
2香蕉100
3葡萄10
4橙色1
5苹果,香蕉1100
6苹果,葡萄1010
7苹果,橙色1001
8香蕉、葡萄110
香蕉,橘子101
10葡萄,橙11
11苹果、香蕉、葡萄1110
12苹果、香蕉、橘子1101
13苹果、葡萄、橘子1011
14香蕉、葡萄、橘子111
15苹果、香蕉、葡萄、橘子1111
样本数据:

dat <- data.frame(LOOKUP= c(1000, 100, 10, 1),
                  VALUE = c("Apple", "Banana", "Grape", "Orange"),
                  stringsAsFactors = FALSE)

dat相关:非常感谢!我正在尝试运行您的代码,但收到以下错误消息:“在导入数据时,我使用了
stringsAsFactors=FALSE
,在类(out)中出错。”。请看更新后的帖子。你是一个传奇人物。多谢。只是提醒一下,我认为需要将“Tibble”添加到所需库的列表中。我需要为enframe加载它。再次感谢:“你是对的,我一直认为它是 DPLYR <代码>的一部分:)很高兴它有帮助!
dat <- data.frame(LOOKUP= c(1000, 100, 10, 1),
                  VALUE = c("Apple", "Banana", "Grape", "Orange"),
                  stringsAsFactors = FALSE)