【发布时间】:2017-04-14 23:31:03
【问题描述】:
我相信这是一个复杂的问题,我会尽量让它易于理解。
我有 3 个数据框,例如:
NS_3<-as.data.frame(cbind(c("3","3","3","3","3"),c("341007","325001","324003","524302","346002")))
NS_4<-as.data.frame(cbind(c("4","4","4","4","4","4","4"),c("341007","270001","270001","521009","346001","524302","335104")))
NS_15<-as.data.frame(cbind(c("15","15","15","15","15"),c("301001","301001","316104","344003","291003")))
names(NS_3)<-c("NS", "Pred FAILCODE TEST")
names(NS_4)<-c("NS", "Pred FAILCODE TEST")
names(NS_15)<-c("NS", "Pred FAILCODE TEST")
我想做的是:
1) 检查数据帧NS_4 和NS_15 是否包含NS_3$Pred FAILCODE TEST 的每一行的值。
2) 如果这个值存在于某个数据帧中,那么它应该计算并存储这个数据帧的Pred FAILCODE TEST的所有值,除了找到的值。
例如:
对于NS_3 中的第一个Pred FAILCODE TEST 值,检查341007 是否存在于NS_4 和NS_15 中。
一旦这项检查是NS_4 中的TRUE,那么它应该计算所有NS_4$Pred FAILCODE TEST 值的频率,除了有问题的值(341007)。
因此,第一个循环的结果应该是
Results for the first loop 341007
对于NS_3$Pred FAILCODE TEST 的第二个和第三个值,由于325001 和324003 都没有出现在任何数据帧中,因此不应考虑它们。
对于第四个值524302,结果应该是这样的:
FAILCODES 524302
341007 1
270001 2
521009 1
346001 1
335104 1
一旦循环以NS_3$Pred FAILCODE TEST 值结束,那么它应该对NS_4$Pred FAILCODE TEST 值做同样的事情,在NS_3 和NS_15 中搜索它们。完成 NS_4 后,它应该对 NS_15 执行相同的操作,搜索
NS_15$Pred FAILCODE TEST 的值位于 NS_3 和 NS_4。
我相信它需要嵌套的 for-loops 来遍历每个数据帧的每一行。此外,dflist<-list(df1=NS_3,df2=NS_4,df3=NS_15) 在这些循环中可能会有所帮助。
实际上,我有大约 70 个不同的数据帧和 50 个不同的 Pred FAILCODE TEST 值来检查每个数据帧。
我希望清楚,如果你们需要更多信息,请告诉我!
【问题讨论】:
标签: r dataframe count nested-loops