如何移调&合并R中的行

时间:2016-02-16 23:48:53

标签: r merge transpose

目前,让我说我的df看起来像这样:

Number  Value
a1      cat
a1      dog
a2      dog
a3      fish
a3      cat 

但我想要的是df看起来像这样:

Number   Cat Fish Dog 
a1        1    0   0
a2        0    0   1
a3        1    1   0 

我如何在R中这样做呢?任何帮助将非常感谢!!

2 个答案:

答案 0 :(得分:2)

试试这个。没有包使用。

tab <- xtabs(~., df)

给出:

> tab
      Value
Number cat dog fish
     1   1   1    0
     2   0   1    0
     3   1   0    1

将列大写:

colnames(tab) <- sub("(.)", "\\U\\1", colnames(tab), perl = TRUE)

或者,名称可以大写如下:

example(chartr) # this will define .simpleCap and capwords functions
colnames(tab) <- capwords(colnames(tab))

注意:我们使用了这个输入:

Lines <- "Number Value
1      cat
1      dog
2      dog
3      fish
3      cat "
df <- read.table(text = Lines, header = TRUE, as.is = TRUE)

答案 1 :(得分:0)

您可以计算对的数量,然后传播df(使用dplyr和tidyr包):

df <- df %>% group_by(Number, Value) %>% summarize(count = n())

spread(df, Value, count, fill = 0)