r - 如何为唯一 ID 转置字符数据
问题描述
我试图执行求和函数来计算唯一 ID 的交互次数
所以我有这样的事情:
Client ID
JOE12_EMI
ABC12_CANC
ABC12_EMI
ABC12_RENE
等等...
它旁边还有一个列,用于计算每个唯一 ID 重复的次数。
Frequency
1
2
2
1
有没有一种方法可以将每个 ID 的所有活动类型(EMI、TELI、PFL)相加,然后放入新列?
我试图通过将实际 ID 与活动类型分开来转置数据,但这不会返回总和,感谢您的帮助。我不确定这是否是最好的方法,或者是否将数据转换为宽格式然后执行另一个求和函数,但我不确定如何去做。
separate(frequency, id, c("id", "act_code") )
nd <- melt(frequency, id=(c("id")))
解决方案
尝试这个:
library(dplyr)
data=data.frame(Client_ID= c("JOE12_EMI",
"ABC12_CANC",
"ABC12_EMI",
"ABC12_RENE"),
frequency= c(1,2,2,1))
client_and_id <- as.data.frame(do.call(rbind, strsplit(as.character(data$Client_ID), "_")))
names(client_and_id) <- c("client", "id")
data <- cbind(data, client_and_id)
data_sum <- data %>% group_by(id) %>% mutate(sum_freq = sum(frequency))
输出
> data_sum
# A tibble: 4 x 5
# Groups: id [3]
Client_ID frequency client id sum_freq
<fct> <dbl> <fct> <fct> <dbl>
1 JOE12_EMI 1 JOE12 EMI 3
2 ABC12_CANC 2 ABC12 CANC 2
3 ABC12_EMI 2 ABC12 EMI 3
4 ABC12_RENE 1 ABC12 RENE 1
您还可以按 ID 显示输出:
distinct(data_sum %>% dplyr::select(id, sum_freq))
# A tibble: 3 x 2
# Groups: id [3]
id sum_freq
<fct> <dbl>
1 EMI 3
2 CANC 2
3 RENE 1
推荐阅读
- audio - ffmpeg - 在输出到 rtmp 之前正确处理未对齐的音频/视频输入流
- r - 计算滚动窗口上的自回归 AR1 模型系数
- c# - 在 c# 中获取 Google Sheets API v4 中的最后一列
- reactjs - 反应可重用组件哪种方法更好用
- bash - 当特定字符串出现时打印它们每次出现
- amazon-web-services - 是否可以在 Azure DevOps 的构建管道期间下载文件/数据?
- sockets - 在“接收”它们之后将 UDP 数据包保留在 OS 缓冲区中
- node.js - Mailchimp 和 Node.js 与 typescript noob 问题:Import vs Require
- symfony - symfony 4.4 + sonata deprecations like sonata.deprecated_text.twig.extension | sonata.twig.deprecated_template_extension
- java - 如何从返回 CompletableFuture 的 REST API 端点获取数据