R 将特定的重复列数据转换为给定ID的行
我有一个数据框,它由第一列中的ID和给定ID的多个事务组成。例如:R 将特定的重复列数据转换为给定ID的行,r,dataframe,rows,transpose,R,Dataframe,Rows,Transpose,我有一个数据框,它由第一列中的ID和给定ID的多个事务组成。例如: ID Transaction 1111 $13 1111 $55 1111 $4 1112 $27 1112 $40 1113 $12 1114 $100 1114 $60 1114 $55 ID Transaction1 Transaction2 Transaction3 1111 $13 $55 $4 1112
ID Transaction
1111 $13
1111 $55
1111 $4
1112 $27
1112 $40
1113 $12
1114 $100
1114 $60
1114 $55
ID Transaction1 Transaction2 Transaction3
1111 $13 $55 $4
1112 $27 $40
1113 $12
1114 $100 $60 $55
我试图做的是只使用一行客户ID,然后为每个实例创建多个事务。例如:
ID Transaction
1111 $13
1111 $55
1111 $4
1112 $27
1112 $40
1113 $12
1114 $100
1114 $60
1114 $55
ID Transaction1 Transaction2 Transaction3
1111 $13 $55 $4
1112 $27 $40
1113 $12
1114 $100 $60 $55
任何帮助都将不胜感激。我一直在尝试使用for循环之类的工具,但我一直在工作中迷失方向,一直在寻找一种更简单的方法来实现这一点。使用data.table:
在哪里
使用data.table:
在哪里
整洁的方法
样本数据
整洁的方法
样本数据
library(tidyverse)
df %>%
group_by(ID) %>%
mutate(n = paste0("Transaction", 1:n())) %>%
spread(n, Transaction)
# ID Transaction1 Transaction2 Transaction3
# <int> <fct> <fct> <fct>
#1 1111 $13 $55 $4
#2 1112 $27 $40 NA
#3 1113 $12 NA NA
#4 1114 $100 $60 $55
df <- read.table(text =
"ID Transaction
1111 $13
1111 $55
1111 $4
1112 $27
1112 $40
1113 $12
1114 $100
1114 $60
1114 $55", header = T)
library(plyr)
library(reshape2)
x <- read.table(header = TRUE, text = "
ID Transaction
1111 $13
1111 $55
1111 $4
1112 $27
1112 $40
1113 $12
1114 $100
1114 $60
1114 $55
")
x<- ddply(x, "ID", transform,
castTransaction = paste0("Transaction", seq(length(Transaction))))
dcast(ID ~ castTransaction, value.var = "Transaction", data = x)