gpt4 book ai didi

r - 计算复杂数据框中的真/假

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

我想在 R 中做一些相当复杂的事情,但我不确定从哪里开始。

我有一个看起来像这样的数据框:

main_val sub_val bit_one bit_two
one a 1 1
one a 1 0
one a 1 1
one b 1 0
two a 1 1
two b 1 1
two a 1 1

现在我统计每个主值的每个子值的位所代表的0、1、2、3的个数。所以这应该返回:

main_val sub_val  0s  1s  2s  3s
one a 0 0 1 2
one b 0 0 1 0
two a 0 0 0 2
two b 0 0 0 1

有没有想过如何做到这一点?我只能想到会花费很长时间的丑陋 for 循环(这将在大量数据上运行)。

最佳答案

请原谅我之前的评论 - 我认为您实际上只需要 table()reshape() 来在 base R 中执行此操作。如果您有然而,确实有大量数据,此时我建议调查 data.table

# Start by turning of stringsAsFactors
options(stringsAsFactors = FALSE)

# Create fake data
fake.data <- data.frame(main_val = c("one","one","one","one","two","two","two"),
sub_val = c("a","a","a","b","a","b","a"),
bit_one = c(1,1,1,1,1,1,1),
bit_two = c(1,0,1,0,1,1,1))

# Generate a decimal representation of your two bits
fake.data$decimal <- fake.data$bit_one*1 +fake.data$bit_two*2

# Create a table of the results, then reshape it
fake.data.summary <- as.data.frame(table(Main=fake.data$main_val,
Sub=fake.data$sub_val,
Value=fake.data$decimal))

fake.data.summary <- reshape(data = fake.data.summary,
v.names = "Freq",
idvar = c("Main","Sub"),
timevar = "Value",
direction = "wide")

请注意,在此示例中,输出中只会得到 1 和 3,因为输入中只有 1 和 3。如果无论可能存在或不存在都需要统一输出,您可能需要对输出进行一些清理 - 但我怀疑您不需要这样做,因为您可能有足够的音量来确保代表 0 到 3 .

关于r - 计算复杂数据框中的真/假,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32874013/

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