我如何组织这些数据,以便每个 ID 有一行,每个操作都有一列用于 R 中的每日联系人? [关闭]

Posted

技术标签:

【中文标题】我如何组织这些数据,以便每个 ID 有一行,每个操作都有一列用于 R 中的每日联系人? [关闭]【英文标题】:How do I organize this data so that each ID has one row, and each Action has one column for Daily Contacts in R? [closed] 【发布时间】:2022-01-10 04:39:45 【问题描述】:

我的数据集是:

ID Action Daily_Contact
760 Email 5
760 Text 4
760 Phone call 7
430 Phone call 2
430 Email 9
430 Text 8

我希望它看起来像这样,

ID Email Text PhoneCall
760 5 4 7
430 9 8 2

【问题讨论】:

好吧,是什么阻止了你? 【参考方案1】:

您可以使用data.table

library(data.table)

dt <- data.table(id, action, Daily_Contact)

dcast(dt, id ~ action, value.var = "Daily_Contact")

##    id Email Phone call Text
## 1: 430     9          2    8
## 2: 760     5          7    4

【讨论】:

【参考方案2】:

下次,请复制并粘贴 dput(df) 的输出,以便更容易复制。这是一个 tidyverse 解决方案。

df <- data.frame(id=c(760,760,760,430,430,430),
                 action=c("email","text","phone","phone","email","text"),
                 daily_contact=c(5,4,7,2,9,8))


df %>%
  group_by(id) %>%
  pivot_wider(names_from = action, values_from = daily_contact)

编辑: TarJae 的评论是正确的。它也适用于我。

df %>%
  pivot_wider(names_from = action, values_from = daily_contact)

【讨论】:

你不需要group_bypivot_wider(df, names_from = action, values_from = daily_contact)

以上是关于我如何组织这些数据,以便每个 ID 有一行,每个操作都有一列用于 R 中的每日联系人? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

展开data.table,使每个ID的每个模式匹配一 行

如何在 MySQL 中为每个 ID 只选择一行?

如何组织一个包含多个包的 python 项目,以便包中的每个文件仍然可以单独运行?

如何限制每个用户 ID 一行

在结构中组织不同的结果集,以便可以通过Id查询它,并返回包含与该Id关联的所有道具的字典

如何有条件地为每个用户选择一行?