gpt4 book ai didi

R函数按列分类?

转载 作者:行者123 更新时间:2023-12-04 10:12:40 27 4
gpt4 key购买 nike

我想编写一个函数,它接受一个数据框,计算多个列的出现次数,然后根据列名出现次数为该行分配一个“类别”。

以这个df为例:

df <- data.frame(k1 = c(0,0,3,4,5,1), 
k2 = c(1,0,0,4,5,0),
k3 = c(0,0,0,8,0,0),
k4 = c(2,5,0,3,4,5))

我希望输出看起来像这样:

df.final<-data.frame(k1 = c(0,0,3,4,5,1), 
k2 = c(1,0,0,4,5,0),
k3 = c(0,0,0,8,0,0),
k4 = c(2,5,0,3,4,5),
Category = c("k2_k4","k4","k1","k1_k2_k3_k4","k1_k2_k4","k1_k4"))

当然,我的实际数据有很多很多行,我希望这个函数可以用来评估具有任意数量列的数据框。我只是不确定如何编写函数。我是函数编写新手!

最佳答案

您可以使用 data.table::transpose() 函数让每一行成为一个向量,然后使用 sapply 循环遍历列表并将相应的列名称粘贴到其中值不为零:

df$category = sapply(data.table::transpose(df), 
function(r) paste0(names(df)[r != 0], collapse = "_"))

df
# k1 k2 k3 k4 category
#1 0 1 0 2 k2_k4
#2 0 0 0 5 k4
#3 3 0 0 0 k1
#4 4 4 8 3 k1_k2_k3_k4
#5 5 5 0 4 k1_k2_k4
#6 1 0 0 5 k1_k4

关于R函数按列分类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41755021/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com