gpt4 book ai didi

r - 创建一个具有不同列的元素计数的列

转载 作者:行者123 更新时间:2023-12-01 19:41:14 25 4
gpt4 key购买 nike

我有一个DF

 x y z
1 1 1
1 2 5
2 2 5
3 3 5

我想在 R 中使用一个简单的命令来生成一个新的 DF 列,它是我原始 DF 的计数,如下所示:

 x y z xcount ycount zcount
1 1 1 2 1 1
1 2 5 2 2 3
2 2 5 1 2 3
3 3 5 1 1 3

我知道这是一个简单的问题,也许我思考这个问题的方式也受到我之前使用 Stata 的经验的限制。我已经研究过使用 table 函数,但该函数返回的向量的长度等于唯一值的数量。我可以将这些值映射到 R 中的新列,但这看起来很笨拙。

最佳答案

这是一长串:

cbind(df, setNames(lapply(df, function(x) ave(x, x, FUN = length)),
paste0(names(df), "count")))
# x y z xcount ycount zcount
#1 1 1 1 2 1 1
#2 1 2 5 2 2 3
#3 2 2 5 1 2 3
#4 3 3 5 1 1 3

重要的部分是:

> lapply(df, function(x) ave(x, x, FUN = length))
$x
[1] 2 2 1 1

$y
[1] 1 2 2 1

$z
[1] 1 3 3 3

剩下的就是化妆品。


您可以将其放入一个函数中以便于处理:

dfcount <- function(df) cbind(df, setNames(lapply(df, function(x) ave(x, x, FUN = length)), paste0(names(df), "count")))
dfcount(df)
# x y z xcount ycount zcount
#1 1 1 1 2 1 1
#2 1 2 5 2 2 3
#3 2 2 5 1 2 3
#4 3 3 5 1 1 3

关于r - 创建一个具有不同列的元素计数的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29084924/

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