gpt4 book ai didi

根据各列中提到的集体计数重复行

转载 作者:行者123 更新时间:2023-12-04 23:36:51 25 4
gpt4 key购买 nike

如何根据 R 中各自列(考虑多列)中提到的计数重复行?

data <- data.frame(
city=c("A","B","C","D","E","F","G"),
score=c(83,94,1,21,2,3,0),
J=c(2,0,1,0,3,0,0),
K=c(0,2,0,3,0,1,0),
L=c(1,1,0,4,0,0,0))
data

原始数据框 :

enter image description here

所需数据框 :

enter image description here

考虑到所有列数,P.S.城市 D 被重复 4 次,其中第 k 列中的 3 行计数为 1,而 L 列的 4 行相对于城市 D 计数为 1。

最佳答案

另一个 data.table 解决方案:

library(data.table)
setDT(data)
data[, lapply(.SD, function(x){
g <- pmax(max(unlist(.SD)), 1)
rep(1:0, c(x, g - x)) }), by = .(city, score)]

# city score number number2 number3
# 1: A 83 1 0 1
# 2: A 83 1 0 0
# 3: B 94 0 1 1
# 4: B 94 0 1 0
# 5: C 1 1 0 0
# 6: D 21 0 1 1
# 7: D 21 0 1 1
# 8: D 21 0 1 1
# 9: D 21 0 0 1
# 10: E 2 1 0 0
# 11: E 2 1 0 0
# 12: E 2 1 0 0
# 13: F 3 0 1 0
# 14: G 0 0 0 0

所有数字都为零的行被正确处理。替换 g <- pmax(max(unlist(.SD)), 1)g <- max(unlist(.SD))如果您不想要这样的行:
data[, lapply(.SD, function(x){
g <- max(unlist(.SD))
rep(1:0, c(x, g - x)) }), by = .(city, score)]

关于根据各列中提到的集体计数重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52071734/

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