使用匹配列收集行并处理成新数据?

时间:2017-07-19 21:55:12

标签: r

我有一堆列,我想获取某些列具有相同值的数据子集:

            <xe:namePicker id="namePicker1" for="inputText1">
                <xe:this.dataProvider>
                    <xe:dominoNABNamePicker addressBookSel="all" nameList="people"></xe:dominoNABNamePicker>
                </xe:this.dataProvider>
                <xe:this.dojoAttributes>
                    <xp:dojoAttribute name="maxRowCount" value="10000">
                    </xp:dojoAttribute>
                </xe:this.dojoAttributes>
            </xe:namePicker>

所以我需要根据Col0和Col1来选择。所以它会通过并选择Col0和Col1匹配的所有内容。

所以我们有一个看起来像这样的结果:

Col0 Col1 Col2 
A    beer 5
A    beer 439
A    wine 123
A    wine 1293
B    beer 493
B    beer 91
B    wine 944

然后我想根据其他数据列将结果处理成其他内容。因此,如果它在一个具有该值的不同表中创建一个新行,那么让我们说检查Col2的总和是否为素数。如果不是,请找到最接近的素数,然后添加一个最接近素数的新行。

1 个答案:

答案 0 :(得分:0)

加载一些库和您的数据df

library(data.table)
library(tidyverse)
df <- fread("Col0\tCol1\tCol2 
    A\tbeer\t5
    A\tbeer\t439
    A\twine\t123
    A\twine\t1293
    B\tbeer\t493
    B\tbeer\t91
    B\twine\t944",header=T,sep="\t") %>%
    as.data.frame()

我使用tidyverse来达到您想要的输出

df1 <- df %>%
         group_by(Col0,Col1) %>%
         nest(Col2) %>%
         rowwise() %>%
         mutate(data = map(data,~paste0("[", Col0, ", ", Col1, ", ", .x, "]"))) %>%
         ungroup() %>%
         unnest(data) %>%
         group_by(Col0,Col1) %>%
         summarise(data = paste0(data, collapse=", "))

<强>输出

   Col0  Col1                            data
1     A  beer    [A, beer, 5], [A, beer, 439]
2     A  wine [A, wine, 123], [A, wine, 1293]
3     B  beer   [B, beer, 493], [B, beer, 91]
4     B  wine                  [B, wine, 944]  

如果您只想保存 所需的输出

mylist <- df1$data