如何解决如何比较数据配置文件随时间的变化?
说,我有数据集
df1=
structure(list(date = c("17.02.2021","04.11.2020","14.11.2020","24.11.2020","29.11.2020","04.12.2020","09.12.2020"),x1 = c(0L,0L,7L,0L),x2 = c(674L,632L,1036L,656L,736L,762L,698L),x3 = c(698L,712L,1140L,704L,784L,786L,722L
),x4 = c(522L,472L,988L,464L,608L,578L,514L),x5 = c(2408L,3256L,2840L,2888L,2632L,2648L),x6 = c(1952L,2336L,2480L,2208L,2144L,2016L),x7 = c(1056L,1120L,1504L,1056L,1184L,1120L),x8 = c(1984L,2464L,2400L,2080L),x9 = c(2336L,2976L,2784L,2528L,2400L),x10 = c(2528L,3232L,3104L,2848L,2912L,2592L,2656L),x11 = c(1248L,1312L,1248L
)),class = "data.frame",row.names = c(NA,-7L))
等等。
这里参考数据集
df2=structure(list(date = c("06.11.2019","01.12.2019","25.01.2020","04.02.2020","09.02.2020","14.02.2020"),x1 = c(12L,1L,6L,23L,1L),x2 = c(1272L,1046L,688L,572L,592L,328L),x3 = c(1032L,974L,780L,800L,568L),x4 = c(792L,862L,496L,476L,296L),x5 = c(2232L,1496L,1784L,2792L,3064L,3544L),x6 = c(2976L,1904L,1632L,1760L,1376L,1440L),x7 = c(1568L,1248L,1008L,992L,800L),x8 = c(1888L,2720L),x9 = c(2080L,3296L),x10 = c(2400L,1552L,1824L,2928L,3360L),x11 = c(2400L,1040L,736L)),-6L))
有没有办法或方法可以将df1中每一行数据的profile与参考数据集df2进行比较,如果profile相似,则为1,否则为0
两个数据集中的日期可能不同,主要问题是检测配置文件是否相似。
我想要的输出。 Peter 的代码很好,但是否可以通过变量计算配置文件之间的差异,例如
解决方法
此代码可让您直观地比较参考和 df1
配置文件。如您所见,没有任何配置文件完全匹配。有些配置文件是相似的,但没有@user2974951 指出的“相似”的定义,很难将其推向更接近答案。
library(dplyr)
library(tidyr)
library(ggplot2)
# restructure the data to allow comparison between the datasets
df <-
expand.grid("date_ref" = df2$date,"date_df1" = df1$date) %>%
left_join(df2,by = c("date_ref" = "date")) %>%
left_join(df1,by = c("date_df1" = "date")) %>%
pivot_longer(starts_with("x"),names_to = c("var","df"),names_sep = "\\.") %>%
mutate(df = if_else(df == "x","ref","df1"),var = factor(var,paste0("x",1:11)))
# now you can plot the data to compare profiles; had to add some formatting to make the graph readable.
ggplot(df,aes(var,value,group = df,colour = df))+
geom_line()+
facet_grid(date_ref~date_df1)+
labs(colour = "Dataset")+
theme_classic()+
theme(legend.position = "bottom",axis.text.x = element_text(size = 6,angle = 90),axis.text.y = element_text(size = 6),strip.text = element_text(size = 6))
由 reprex package (v1.0.0) 于 2021 年 4 月 7 日创建
,您首先需要定义的是您要使用的相似性标准以及相似性的阈值级别(数据集需要多相似才能被视为等效)。同样重要的因素是数据的性质。例如,您是否认为 x1..x11 是独立的,还是只是同一组的不同样本。
根据答案,它可以是任何东西,从精确地比较每个 df1[i,2:12] 到 df2[i,2:12](如果它们只是重复或不重复)到将它们都与 NA 进行比较并检查如果它们都是 NA 或都是已知值。介于两者之间的是检查数据集每一行的每个参数的差异是否不大于最小值的 0.05,如果所有参数都正常或使用类似 Pearson 的相关系数({{ 1}} 函数默认为每一行启用它)并将其值与 0.5 进行比较(例如,0.05 和 0.5 都只是任意数字,它们可能需要进行一些调整)。或者匹配点的数量(完全与整数比较或在某种程度上相似)对您来说可能是一个更好的指示。还有已知的样本组差异、时间序列差异或其他统计假设的标准检验。其中许多都可以通过捆绑包在 R 中获得,如果您喜欢其他东西,那么它很可能已经在您可以轻松下载和安装的额外包之一中提供。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。