0
4 개의 조건이 만족되면 함수/계산을 수행하고 비교할 두 개의 CSV 파일이 있습니다.두 개의 데이터 프레임에서 공통 열을 찾고 함수를 수행하십시오.
파일 1 :
SN CY Year Month Day Hour Lat Lon
196101 1 1961 1 14 12 8.3 134.7
196101 1 1961 1 14 18 8.8 133.4
196101 1 1961 1 15 0 9.1 132.5
196101 1 1961 1 15 6 9.3 132.2
196101 1 1961 1 15 12 9.5 132
196101 1 1961 1 15 18 9.9 131.8
196125 1 1961 1 14 12 10.0 136
196125 1 1961 1 14 18 10.5 136.5
파일 2 : 나는 위도 - 경도 사이의 거리들이 같은 년, 월, 일있을 때마다이 두 파일에서 포인트를 계산하기 위해 노력하고
Year Month Day RR Hour Lat Lon
1961 1 14 0 0 14.0917 121.055
1961 1 14 0 6 14.0917 121.055
1961 1 14 0 12 14.0917 121.055
1961 1 14 0 18 14.0917 121.055
1961 1 15 0 0 14.0917 121.055
1961 1 15 0 6 14.0917 121.055
, 시간은입니다. 여기 내 코드는 다음과 같습니다.
jtwc <-read.csv("file1.csv",header=T,sep=",")
stn <-read.csv("file2.csv",header=T,sep=",")
dms_to_rad <- function(d, m, s) (d + m/60 + s/3600) * pi/180
great_circle_distance <- function(lat1, long1, lat2, long2) {
a <- sin(0.5 * (lat2 - lat1))
b <- sin(0.5 * (long2 - long1))
12742 * asin(sqrt(a * a + cos(lat1) * cos(lat2) * b * b))
}
jtwc$dist<- great_circle_distance(dms_to_rad(jtwc$Lat,0,0),dms_to_rad(jtwc$Lon,0,0),dms_to_rad(stn$Lat,0,0),dms_to_rad(stn$Lon,0,0))
write.csv(stn,file="dist.csv",row.names=T)
"SN"열은 file1의 고유 식별자입니다. 내가 원하는 작업 :
[1] 두 파일의 연도, 월, 일 및 시간이 같을 때의 거리 (jtwc $ dist)를 계산합니다.
[2] 행이 같은 연도, 월, 일 및 시간을 가지지 만 SN 번호가 인 파일 1에있는 경우 동일한 연도, 월, 일 및 시간을 가진 행의 값을 사용합니다 거리를 계산할 때 파일 2에서.
출력이 좋아한다 :
SN CY Year Month Day Hour Lat Lon dist
196101 1 1961 1 14 12 8.3 134.7 1620.961
196101 1 1961 1 14 18 8.8 133.4 1467.859
196101 1 1961 1 15 0 9.1 132.5 1334.382
196101 1 1961 1 15 6 9.3 132.2 1324.915
196125 1 1961 1 14 12 10.0 136 1687.127
196125 1 1961 1 14 18 10.5 136.5 1724.351
제대로이 작업을 수행하는 방법에 대한 제안을?
많은 감사를! – Lyndz