如何使用值作为列名扩展数据帧,并在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的选项?