gpt4 book ai didi

使用列内的固定效果信息 reshape R 中的数据

转载 作者:行者123 更新时间:2023-12-04 10:26:18 25 4
gpt4 key购买 nike

我在 excel 中获得了一些格式非常笨拙的数据,我需要对其进行 reshape ,以使其适合在 R 中运行生存分析。

我将数据摘录上传到 Google 驱动器:https://drive.google.com/open?id=1ret3bCDCYPDALQ16YBloaeopfl2-qVbp
原始数据框有大约 2100 个观测值和 950 个变量

这是基本数据框:

my.data<-data.frame(
ID=c( "", "","C8477","C5273","C5566"),
LR=c("2012Y","State:FL",5,6,8),
LR=c("2012Y","State:AZ",5,8,10),
LR=c("2011Y","State:FL",7,2,1)
)

my.data

# ID LR LR.1 LR.2
# 1 2012Y 2012Y 2011Y
# 2 State:FL State:AZ State:FL
# 3 C8477 5 5 7
# 4 C5273 6 8 2
# 5 C5566 8 10 1

所有列都具有相同的名称“LR”。不知道以后会不会有问题。。。

年份在第 1 行给出,观察发生在第 2 行的相应状态。

作为输出,我需要一些面板数据,以便在以后的生存分析中使用。
my.data<-data.frame(
ID=c("C8477","C5273","C5566"),
Year=c("2012","2012","2011"),
State=c("FL","AZ","FL"),LR=c(5,8,1)
)

my.data

# ID Year State LR
# 1 C8477 2012 FL 5
# 2 C5273 2012 AZ 8
# 3 C5566 2011 FL 1

我玩弄了 reshape 函数和 seq 函数,但这些都不能帮助我朝着正确的方向前进,因为数据框的排列很奇怪。

最佳答案

这是 tidyverse方法:

my.data <- data.frame(
ID=c( "", "","C8477","C5273","C5566"),
LR=c("2012Y","State:FL",5,6,8),
LR=c("2012Y","State:AZ",5,8,10),
LR=c("2011Y","State:FL",7,2,1)
)

我的代码:
library(tidyverse)
year <- as.matrix(my.data[1, -1])
year <- str_split(year, "Y", simplify = T)[,1]
state <-as.matrix(my.data[2, -1])
both<-paste(state, year, sep = "_")
mydata1<-my.data[-c(1, 2), ]
colnames(mydata1) <-c("ID", both)
long <-pivot_longer(mydata1,
cols = starts_with("state"),
names_to = "State_year",
values_to = "LR")
long %>%
transmute(
ID, LR,
state = str_split(State_year, "_", simplify = T)[, 1],
state = str_split(state, ":", simplify = T)[, 2],
year = str_split(State_year, "_", simplify = T)[, 2]
)


我们得到:
  ID    LR    state year 
1 C8477 5 FL 2012
2 C8477 5 AZ 2012
3 C8477 7 FL 2011
4 C5273 6 FL 2012
5 C5273 8 AZ 2012
6 C5273 2 FL 2011
7 C5566 8 FL 2012
8 C5566 10 AZ 2012
9 C5566 1 FL 2011

关于使用列内的固定效果信息 reshape R 中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58367281/

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