gpt4 book ai didi

R 将频率扩展到原始计数

转载 作者:行者123 更新时间:2023-12-04 01:15:16 25 4
gpt4 key购买 nike

如果我有这样的数据

x <- data.frame(id=letters[1:4],v1=c(3,0,0,1),v2=c(1,1,0,1),v3=c(1,0,0,0),v4=c(2,0,2,0))

id v1 v2 v3 v4
a 3 1 1 2
b 0 1 0 0
c 0 0 0 2
d 1 1 0 0

怎么改成最好的方法

id  v1  v2  v3  v4
a 1 1 1 1
a 1 NA NA 1
a 1 NA NA NA
b 0 1 0 0
c 0 0 0 1
c NA NA NA 1
d 1 1 0 0

其中数据仅由 1 和 0 组成。如果需要,每个 ID 现在都会获得多行。空位由 NA 填充。

最佳答案

您可以使用 tidyr 中的 uncount()

library(dplyr)
library(tidyr)

x %>%
uncount(apply(select(x, v1:v4), 1, max)) %>%
group_by(id) %>%
mutate(across(v1:v4, ~ {if(first(.) == 0) 0 else rep(1, first(.))}[1:n()]))

# # A tibble: 7 x 5
# # Groups: id [4]
# id v1 v2 v3 v4
# <chr> <dbl> <dbl> <dbl> <dbl>
# 1 a 1 1 1 1
# 2 a 1 NA NA 1
# 3 a 1 NA NA NA
# 4 b 0 1 0 0
# 5 c 0 0 0 1
# 6 c NA NA NA 1
# 7 d 1 1 0 0

关于R 将频率扩展到原始计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63569854/

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