식물 잎 길이와 너비 데이터를 포함하는 두 개의 열이있는 데이터 프레임이 있습니다.
2019 년에는 다양한 데이터가 있습니다. 일부 데이터 포인트에는 길이 및 면적 측정 만 있습니다. 일부 다른 데이터 포인트에는 세 가지 측정 값이 모두 있습니다.
이 데이터로 전환 계수를 계산할 수있었습니다. 2020 년에는 길이와 너비 만 측정합니다. 변환 계수를 사용하여 2020 년의 면적을 계산하고 2019 년의 면적 측정 값을 덮어 쓰지 않고 잎 면적 열에 추가하고 싶습니다.
df_all <- df_all%>% mutate(rep_leaf_length*rep_leaf_width * 0.790590)
이것이 내가 원하는 곳으로가는 방법을 모른다는 것을 깨닫기 전에 나의 첫 출발점이었습니다.
여러분은 곱셈을 수행하고 결과를 기존 열에 추가하는 방법에 대한 아이디어가 있습니까?하지만 2020 년에만 해당되거나 NA가 면적 열에 있고 기존 면적 측정이 아닌 경우.
Year rep_leaf_length rep_leaf_width rep_leaf_area
2019 37.400 NA NA
2019 21.036 8.080 132.914
2019 29.147 2.331 NA
2020 16.600 4.00 NA
2020 21.600 2.2 NA
고마워요 Jan
내가 생각하는 당신이 그 해의 (측정) 잎의 길이와 잎 폭을 사용하여 2020 년부터 (측정되지 않은) 잎 지역을 추론 할 것을 의미한다. 그러나 잎이 직사각형이 아니기 때문에 잎 영역은 너비와 길이의 단순한 제품이 아닙니다. 다행히도 2019 년에 길이, 너비 및 면적이 모두 측정 된 몇 가지 관찰이 있습니다. 즉, 전체 2019 년 관측에 대해 길이 * 너비를 실제 면적과 비교하면 (길이 * 너비)에 대한 실제 면적의 비율을 얻게됩니다. 잎이 비교적 고정 된 모양 일 수 있으므로이 비율을 사용하여 2020 년의 (길이 * 너비) 값을 곱하여 예상 면적을 얻을 수 있습니다.
내가 당신의 의도를 올바르게 해석했다고 가정하면 2019 년에 실제 면적과 (너비 * 길이)의 비율을 다음과 같이 계산할 수 있습니다.
library(dplyr)
ratio <- df_all %>%
filter(Year == 2019) %>%
filter(complete.cases(.)) %>%
summarize(ratio = mean(rep_leaf_area / (rep_leaf_length * rep_leaf_width))) %>%
unlist()
ratio
#> ratio
#> 0.781981
다음과 같이 비율을 사용할 수 있습니다.
df_all %>%
mutate(rep_leaf_area = ifelse(Year == 2020,
rep_leaf_length * rep_leaf_width * ratio,
rep_leaf_area))
#> Year rep_leaf_length rep_leaf_width rep_leaf_area
#> 1 2019 37.400 NA NA
#> 2 2019 21.036 8.080 132.91400
#> 3 2019 29.147 2.331 NA
#> 4 2020 16.600 4.000 51.92354
#> 5 2020 21.600 2.200 37.15974
이것은 2019의 면적 측정에 영향을 미치지 않습니다.
데이터
df_all <- structure(list(Year = c(2019L, 2019L, 2019L, 2020L, 2020L),
rep_leaf_length = c(37.4, 21.036, 29.147, 16.6, 21.6),
rep_leaf_width = c(NA, 8.08, 2.331, 4, 2.2),
rep_leaf_area = c(NA, 132.914, NA, NA, NA)),
class = "data.frame", row.names = c(NA, -5L))
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다