我有2个这样的数据帧(代码如下):
>MainFrame
Station V1 V2 V3
1 Station1 5.000000 4.000000 10.00000
2 Station2 8.571429 5.714286 17.14286
3 Station3 12.142857 7.428571 24.28571
4 Station4 15.714286 9.142857 31.42857
5 Station6 19.285714 10.857143 38.57143
6 Station7 22.857143 12.571429 45.71429
7 Station9 26.428571 14.285714 52.85714
8 Station10 30.000000 16.000000 60.00000
>SubFrame
Date Station1 Station3 Station5 Station7 Station8
1 20000608 5 4.0 10 5 5
2 20000609 10 6.4 20 10 10
3 20000610 15 8.8 30 15 15
4 20000611 20 11.2 40 20 20
5 20000612 25 13.6 50 25 25
6 20000613 30 16.0 60 30 30
我想立即检查SubFrame中的Station-Names(列名)是否包含在MainFrame的第一列中。如果没有,我想删除子框架中的这些列。我只想在SubFrame中拥有也在MainFrame中列出的Station。
在这种情况下,我想删除SubFrame中的Station5和Station8列,因为它们不包含在MainFrame中。
结果应该是这样的:
Date Station1 Station3 Station7
1 20000608 5 4.0 5
2 20000609 10 6.4 10
3 20000610 15 8.8 15
4 20000611 20 11.2 20
5 20000612 25 13.6 25
6 20000613 30 16.0 30
知道怎么做吗?
以下是我的2个测试帧的代码:
x1= c("Station1", "Station2", "Station3", "Station4", "Station6", "Station7", "Station9", "Station10")
x2= seq(5, 30, length=8)
x3= seq(4, 16, length=8)
x4= seq(10, 60, length=8)
MainFrame = data.frame(Station=x1, V1=x2, V2=x3, V3=x4)
x1= c("20000608", "20000609", "20000610", "20000611", "20000612", "20000613")
x2= seq(5, 30, length=6)
x3= seq(4, 16, length=6)
x4= seq(10, 60,length=6)
x5= seq(5, 30, length=6)
x6= seq(5, 30, length=6)
SubFrame = data.frame(Date=x1, Station1=x2, Station3=x3, Station5=x4, Station7=x5, Station8 =x6)
答案 0 :(得分:2)
您可以通过执行以下操作,指定您只想要SubFrame
中的列来对MainFrame
数据框进行分页:
unique(MainFrame$Station)
收益:
unique(MainFrame$Station)
[1] "Station1" "Station2" "Station3" "Station4" "Station6" "Station7" "Station9" "Station10"
*请注意,您必须将此列作为字符col。您可以通过设置:
来完成此操作MainFrame$Station <- as.character(MainFrame$Station)
然后你可以分组:
SubFrame[,colnames(SubFrame) %in% unique(MainFrame$Station)]
Station1 Station3 Station7
1 5 4.0 5
2 10 6.4 10
3 15 8.8 15
4 20 11.2 20
5 25 13.6 25
6 30 16.0 30
我们错过了Date列,因此我们可以通过上面的内容并使用cbind
仅使用Date列来实现这一目标:
cbind(Date = SubFrame$Date, SubFrame[,colnames(SubFrame) %in% unique(MainFrame$Station)])
Date Station1 Station3 Station7
1 20000608 5 4.0 5
2 20000609 10 6.4 10
3 20000610 15 8.8 15
4 20000611 20 11.2 20
5 20000612 25 13.6 25
6 20000613 30 16.0 30