将此数据框用作输入
employee <- c('JohnDoe','PeterGynn','laughter','laughter','happiness')
filename <- c('myfile_1','myfile_1','myfile_1','myfile_2','myfile_2')
input <- data.frame(employee, filename)
employee filename
JohnDoe myfile_1
PeterGynn myfile_1
laughter myfile_1
laughter myfile_2
happiness myfile_2
可以使用以下内容来表示存在与否的二进制表示:
as.data.frame.matrix(t(table(input)))
happiness JohnDoe laughter PeterGynn
myfile_1 0 1 1 1
myfile_2 1 0 1 0
如何将myfile名称列设置为行数,将结果保存到csv中时它们不存在?
答案 0 :(得分:1)
如果我们需要将rownames作为列,则可以使用rownames_to_column
中的tibble
library(tibble)
as.data.frame.matrix(t(table(input))) %>%
rownames_to_column('rn')
# rn happiness JohnDoe laughter PeterGynn
#1 myfile_1 0 1 1 1
#2 myfile_2 1 0 1 0
可以使用tidyverse
library(tidyr)
library(dplyr)
input %>%
count(employee, filename) %>%
spread(employee, n, fill = 0)
# A tibble: 2
#filename happiness JohnDoe laughter PeterGynn
#* <fctr> <dbl> <dbl> <dbl> <dbl>
#1 myfile_1 0 1.00 1.00 1.00
#2 myfile_2 1.00 0 1.00 0
答案 1 :(得分:1)
假设您已按如下方式保存数据:
> d <- as.data.frame.matrix(t(table(input)))
然后,您可以轻松访问rownames并将其保存到新列:
> d['rowname'] <- rownames(d)
> d
happiness JohnDoe laughter PeterGynn rowname
myfile_1 0 1 1 1 myfile_1
myfile_2 1 0 1 0 myfile_2
然后,在保存时,它也保存了这些列,在读完之后你当然可以再次设置行名/索引
rownames(d) <- d['rowname']