从计数到 R 中的案例
From count to cases in R
我有一个数据集,其中有一列指示由多个变量构成的组的出现次数。这里 SEX
和 COLOR
.
CASES <- base::data.frame(SEX = c("M", "M", "F", "F", "F"),
COLOR = c("brown", "blue", "brown", "brown", "brown"))
COUNT <- base::as.data.frame(base::table(CASES))
COUNT
我需要更改数据集的结构,因此该组的每次出现都有一行。有人帮助我创建了一个完美运行的函数。
countsToCases <- function(x, countcol = "Freq") {
# Get the row indices to pull from x
idx <- rep.int(seq_len(nrow(x)), x[[countcol]])
# Drop count column
x[[countcol]] <- NULL
# Get the rows from x
x[idx, ]
}
CASES <- countsToCases(base::as.data.frame(COUNT))
CASES
现在的问题是我有一个巨大的数据集(来自 tidytuesday 的 babyname
数据集),但它不起作用,因为它太慢了。
db_babynames <- data.table::as.data.table(tuesdata$babyname)
db_babynames <- db_babynames[
j = characters_n := stringr::str_count(string = name,
pattern = ".")
][
j = c("year", "characters_n", "n")
]
我正在寻找一个更快的解决方案,如果可能的话使用 data.table
包。
如果需要未计数的版本,我会使用 tidyr::uncount()
,但请考虑此 post 中的建议以使用您的原始数据
library(dplyr)
library(tidyr)
CASES <- base::data.frame(
SEX = c("M", "M", "F", "F", "F"),
COLOR = c("brown", "blue", "brown", "brown", "brown")
)
COUNT <- count(CASES, SEX, COLOR, name = 'Freq')
tidyr::uncount(base::as.data.frame(COUNT), Freq)
#> SEX COLOR
#> 1 F brown
#> 2 F brown
#> 3 F brown
#> 4 M blue
#> 5 M brown
由 reprex package (v2.0.1)
于 2022-03-25 创建
我有一个数据集,其中有一列指示由多个变量构成的组的出现次数。这里 SEX
和 COLOR
.
CASES <- base::data.frame(SEX = c("M", "M", "F", "F", "F"),
COLOR = c("brown", "blue", "brown", "brown", "brown"))
COUNT <- base::as.data.frame(base::table(CASES))
COUNT
我需要更改数据集的结构,因此该组的每次出现都有一行。有人帮助我创建了一个完美运行的函数。
countsToCases <- function(x, countcol = "Freq") {
# Get the row indices to pull from x
idx <- rep.int(seq_len(nrow(x)), x[[countcol]])
# Drop count column
x[[countcol]] <- NULL
# Get the rows from x
x[idx, ]
}
CASES <- countsToCases(base::as.data.frame(COUNT))
CASES
现在的问题是我有一个巨大的数据集(来自 tidytuesday 的 babyname
数据集),但它不起作用,因为它太慢了。
db_babynames <- data.table::as.data.table(tuesdata$babyname)
db_babynames <- db_babynames[
j = characters_n := stringr::str_count(string = name,
pattern = ".")
][
j = c("year", "characters_n", "n")
]
我正在寻找一个更快的解决方案,如果可能的话使用 data.table
包。
如果需要未计数的版本,我会使用 tidyr::uncount()
,但请考虑此 post 中的建议以使用您的原始数据
library(dplyr)
library(tidyr)
CASES <- base::data.frame(
SEX = c("M", "M", "F", "F", "F"),
COLOR = c("brown", "blue", "brown", "brown", "brown")
)
COUNT <- count(CASES, SEX, COLOR, name = 'Freq')
tidyr::uncount(base::as.data.frame(COUNT), Freq)
#> SEX COLOR
#> 1 F brown
#> 2 F brown
#> 3 F brown
#> 4 M blue
#> 5 M brown
由 reprex package (v2.0.1)
于 2022-03-25 创建