gpt4 book ai didi

r - 在 R 中,自定义由 dcast.data.table 创建的列的名称

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

我是 reshape2data.table 的新手,正在尝试学习语法。

我有一个 data.table,我想将每个分组变量的多行转换为每个分组变量的一行。为简单起见,让我们将其设为客户表,其中一些客户共享地址。

library(data.table)

# Input table:
cust <- data.table(name=c("Betty","Joe","Frank","Wendy","Sally"),
address=c(rep("123 Sunny Rd",2),
rep("456 Cloudy Ln",2),
"789 Windy Dr"))

我希望输出具有以下格式:
# Desired output looks like this:
(out <- data.table(address=c("123 Sunny Rd","456 Cloudy Ln","789 Windy Dr"),
cust_1=c("Betty","Frank","Sally"),
cust_2=c("Joe","Wendy",NA)) )

# address cust_1 cust_2
# 1: 123 Sunny Rd Betty Joe
# 2: 456 Cloudy Ln Frank Wendy
# 3: 789 Windy Dr Sally NA

我想要 cust_1...cust_n 的列,其中 n 是每个地址的最大客户数。我并不真正关心顺序——Joe 是 cust_1,Betty 是 cust_2,反之亦然。

最佳答案

Just pushed a commitdata.table v1.9.5dcast 现在

  • 允许在多个 value.var 列和多个 fun.aggregate 函数上进行转换
  • 理解公式
  • 中 undefined variable /表达式

    有了这个,我们可以做到:
    dcast(cust, address ~ paste0("cust", cust[, seq_len(.N), 
    by=address]$V1), value.var="name")
    # address cust1 cust2
    # 1: 123 Sunny Rd Betty Joe
    # 2: 456 Cloudy Ln Frank Wendy
    # 3: 789 Windy Dr Sally NA

    关于r - 在 R 中,自定义由 dcast.data.table 创建的列的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26225206/

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