如何使用值作为列名扩展数据帧,并在R中填充相同单元格的计数?

如何使用值作为列名扩展数据帧,并在R中填充相同单元格的计数?,r,dataframe,R,Dataframe,我有一个如下所示的数据帧 x1 = c('a','bd','c',NA) x2 = c('cd', 'fd', 'g', 'ew') df <- as.data.frame(rbind(x1,x2), stringsAsFactors = FALSE) x1=c('a','bd','c',NA) x2=c('cd','fd','g','ew') df我们可以在创建一列行名(rownames\u to\u column)后,使用pivot\u longer将其重新格式化为“long”格式,

我有一个如下所示的数据帧

x1 = c('a','bd','c',NA)
x2 = c('cd', 'fd', 'g', 'ew')
df <- as.data.frame(rbind(x1,x2), stringsAsFactors = FALSE)
x1=c('a','bd','c',NA)
x2=c('cd','fd','g','ew')

df我们可以在创建一列行名(
rownames\u to\u column
)后,使用
pivot\u longer
将其重新格式化为“long”格式,然后使用
pivot\u wide
将列“rn”改回行名(
column\u to\u rownames


或者使用
base R中的
表格

table(rep(row.names(df), ncol(df)), unlist(df))
#     a bd c cd ew fd g
#  x1 1  1 1  0  0  0 0
#  x2 0  0 0  1  1  1 1

在创建一列行名(
rownames\u to\u column
)后,我们可以使用
pivot\u longer
将其重塑为“long”格式,然后使用
pivot\u wide
将其转换回“wide”,并将列“rn”改回行名(
column\u to\u rownames


或者使用
base R中的
表格

table(rep(row.names(df), ncol(df)), unlist(df))
#     a bd c cd ew fd g
#  x1 1  1 1  0  0  0 0
#  x2 0  0 0  1  1  1 1

这是一个基本的R解决方案

u <- na.omit(as.vector(t(df))) 
dfout <- `names<-`(data.frame(t(apply(df, 1, function(x) +(u %in% x) ))),u)

这是一个基本的R解决方案

u <- na.omit(as.vector(t(df))) 
dfout <- `names<-`(data.frame(t(apply(df, 1, function(x) +(u %in% x) ))),u)

您好,欢迎光临,请将您的数据放在代码块中,而不是图像中。我们将更容易帮助您。您好,欢迎光临,请将您的数据放在代码块中,而不是图像中。我们将更容易帮助您。第一种方法会出错“找不到函数”pivot_longer“@CharlieYoon它来自
tidyr
。我使用了
packageVersion('tidyr')#[1]'1.0.0'
@CharlieYoon该
解决方案对您不起作用吗?第一个方法出错“找不到函数“pivot_longer””@charlieyon它来自
tidyr
。我使用了
packageVersion('tidyr')#[1]'1.0.0'
@CharlieYoon
解决方案是否适合您?是否有删除NA的选项?是否有删除NA的选项?