Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在列中旋转过去6个月的数据_R - Fatal编程技术网

R 在列中旋转过去6个月的数据

R 在列中旋转过去6个月的数据,r,R,我有不同客户分期偿还贷款的数据 数据包括客户的基本详细信息,如姓名,年龄,工资,地区,信用评分等 有一些随时间变化的字段,如每月更新的未清余额(但我并不真正关心这些数据) 在我的数据集中,每个客户有6行数据(在过去6个月内,每个月1行)。每行包含一个名为状态(已付/未付)的列 示例数据集如下所示: Customer Number Age Balance Status A123 34 1000 Paid A123 34 2000

我有不同客户分期偿还贷款的数据

数据包括客户的基本详细信息,如
姓名
年龄
工资
地区
信用评分

有一些随时间变化的字段,如每月更新的未清余额(但我并不真正关心这些数据)

在我的数据集中,每个客户有6行数据(在过去6个月内,每个月1行)。每行包含一个名为
状态
(已付/未付)的列

示例数据集如下所示:

Customer
Number      Age   Balance  Status
A123        34    1000     Paid
A123        34    2000     UnPaid
A123        34    1500     UnPaid
A123        34    1400     Paid
A123        34    1300     Paid
A123        34    1400     UnPaid
A234        36    1000     Paid
A234        36    4000     Paid
A234        36    3000     UnPaid
A234        36    5000     Paid
A234        36    6000     UnPaid
A234        36    1700     Paid
我想将数据转换为以下格式:

Customer
Number      Age Balance  Status1    Status2 Status3 Status4   Status5 Status6
A123        34  1000     Paid       UnPaid  UnPaid   Paid     Paid    UnPaid
A234        36  1000     Paid       Paid    UnPaid   Paid     UnPaid  Paid
请注意,我只对其他列的最新值感兴趣(
Age
Balance
等)

我尝试了
casting()
函数,但它没有达到我想要的效果


有人能帮忙吗

我们可以为每个
编号
选择
余额
第一个
值,并创建一列来分配唯一的状态编号,然后以宽格式获取数据

library(dplyr)

df %>%
  group_by(Number) %>%
  mutate(Balance = first(Balance), 
         col = paste0("Status", row_number())) %>%
  tidyr::pivot_wider(names_from = col, values_from = Status)

#  Number   Age Balance Status1 Status2 Status3 Status4 Status5 Status6
#  <fct>  <int>   <int> <fct>   <fct>   <fct>   <fct>   <fct>   <fct>  
#1 A123      34    1000 Paid    UnPaid  UnPaid  Paid    Paid    UnPaid 
#2 A234      36    1000 Paid    Paid    UnPaid  Paid    UnPaid  Paid   
库(dplyr)
df%>%
分组依据(编号)%>%
变异(平衡=第一个(平衡),
col=paste0(“状态”,行号())%>%
tidyr::pivot\u更宽(名称\u from=col,值\u from=Status)
#数字账龄余额状态1状态2状态3状态4状态5状态6
#                         
#1 A123 34 1000已付款未付款
#2 A234 36 1000已付款未付款
数据

df <- structure(list(Number = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 
2L, 2L, 2L, 2L, 2L), .Label = c("A123", "A234"), class = "factor"), 
Age = c(34L, 34L, 34L, 34L, 34L, 34L, 36L, 36L, 36L, 36L, 
36L, 36L), Balance = c(1000L, 2000L, 1500L, 1400L, 1300L, 
1400L, 1000L, 4000L, 3000L, 5000L, 6000L, 1700L), Status = structure(c(1L, 
2L, 2L, 1L, 1L, 2L, 1L, 1L, 2L, 1L, 2L, 1L), .Label = c("Paid", 
"UnPaid"), class = "factor")), class = "data.frame", row.names = c(NA, -12L))

df这是否回答了您的问题?