1.El redondeo de la temperatura diaria promedio entera más cercana (en ° F) registrado por cierta estación durante un mes cualquiera del 2010 para dos localidades diferentes (L1 y L2). Escriba una función en R que permita calcular:
• La temperatura media de cada localidad
• Cuantos días en cada localidad la temperatura estuvo por debajo de la media
• En cuantos días la temperatura de L1 fue superior a L2, señale los días
• En qué día ocurrió la máxima diferencia de temperatura entre las dos localidades
• Cada dato en la tabla se corresponde a cada día ordenado del mes. En cuantos días la diferencia de temperatura fue de al menos 3 °F
• Convierta la tabla de datos en °F a °C
• Grafique los datos de cada localidad en escala Celsius, use la librería Lattice
library(lattice)
L1<-c(62,50,46,44,43,41,43,45,41,36,41,42,48,51,60,68,71,61,56,55,66,72,65,70,69,59,56,54,59,67,61)
L2<-c(39,40,37,37,37,40,42,47,43,45,44,45,55,46,41,44,48,49,45,40,38,41,41,39,42,42,47,46,43,43,41)
dias<-c(1:31)
df<-data.frame(dias,L1,L2)
funcion1<-function(a,b){
tmediaL1<-mean(a)
tmediaL2<-mean(b)
bajotmediaL1<-length(a[tmediaL1>a])
bajotmediaL2<-length(b[tmediaL2>b])
L1supL2<-length(a[a>b])
cuales<-which(a>b)
maxdif<-which.max(c(a-b))
dm3g<-length(a[a-b>4])
options(digits = 2)
Lote1<-(a-32)*5/9
Lote2<-(b-32)*5/9
g1<-xyplot(Lote1+Lote2~dias,outer = T, grid = T,xlab = "Día",ylab = "Temperatura °C")
return(list("Temperatura media L1"=tmediaL1,"Temperatura media L2"=tmediaL2,"N° dias con T menor a la media en L1"=bajotmediaL1,"N° dias con T menor a la media en L2"=bajotmediaL2, "N° dias con T en L1 mayor a L2"=L1supL2, "Dias del mes donde T en L1 es mayor al L2"=cuales,"Dia con mayor diferencia de T entre L1 y L2"=maxdif,"N° dias con ΔT de 3°F como minimo"=dm3g, "T del L1 en °C"=Lote1, "T del L2 en °C"=Lote2,"Grafico"=g1))
}
funcion1(a=L1,b=L2)
## $`Temperatura media L1`
## [1] 55
##
## $`Temperatura media L2`
## [1] 43
##
## $`N° dias con T menor a la media en L1`
## [1] 14
##
## $`N° dias con T menor a la media en L2`
## [1] 16
##
## $`N° dias con T en L1 mayor a L2`
## [1] 25
##
## $`Dias del mes donde T en L1 es mayor al L2`
## [1] 1 2 3 4 5 6 7 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
##
## $`Dia con mayor diferencia de T entre L1 y L2`
## [1] 22
##
## $`N° dias con ΔT de 3°F como minimo`
## [1] 23
##
## $`T del L1 en °C`
## [1] 16.7 10.0 7.8 6.7 6.1 5.0 6.1 7.2 5.0 2.2 5.0 5.6 8.9 10.6 15.6
## [16] 20.0 21.7 16.1 13.3 12.8 18.9 22.2 18.3 21.1 20.6 15.0 13.3 12.2 15.0 19.4
## [31] 16.1
##
## $`T del L2 en °C`
## [1] 3.9 4.4 2.8 2.8 2.8 4.4 5.6 8.3 6.1 7.2 6.7 7.2 12.8 7.8 5.0
## [16] 6.7 8.9 9.4 7.2 4.4 3.3 5.0 5.0 3.9 5.6 5.6 8.3 7.8 6.1 6.1
## [31] 5.0
##
## $Grafico
2.Cree una función que calcule el coeficiente de variación de un conjunto de datos (de tamaño 50) de pH con distribución Normal de media 5,5 y desviación 0,5. Llame la función cv.n y asegúrese que calcule el coeficiente de variación de todos los datos, de todos menos el máximo, de todos menos el mínimo, de todos menos el máximo y mínimo a la vez y de todos menos el 5% de los datos (2,5 % de cada estremo de la distribución de datos). Presente todos los resultados en un data.frame que luzca de la siguiente forma:
set.seed(2025)
pH<-rnorm(50,5.5,0.5);pH
## [1] 5.8 5.5 5.9 6.1 5.7 5.4 5.7 5.5 5.3 5.9 5.3 4.6 5.3 5.9 6.0 5.4 5.5 5.7 4.8
## [20] 6.7 5.4 5.9 6.9 5.8 5.4 4.8 5.0 5.5 5.3 5.9 5.0 6.4 4.9 5.8 5.2 4.9 5.6 4.8
## [39] 6.0 6.0 6.1 6.2 5.2 5.3 4.7 6.1 5.3 5.6 5.9 5.8
library(DescTools)
cv.n<-function(a){
cvt<-sd(a)/mean(a)
t_max<-a[-which.max(a)]
cv_max<-sd(t_max)/mean(t_max)
t_min<-a[-which.min(a)]
cv_min<-sd(t_min)/mean(t_min)
t_maxmin<-a[-c(which.max(a),which.min(a))]
cv_maxmin<-sd(t_maxmin)/mean(t_maxmin)
t_truncada<-Trim(a,0.025)
cv_truncado<-sd(t_truncada)/mean(t_truncada)
cv<-c("n"=cvt,"n-min"=cv_min ,"n-max"=cv_max, "n-min-max"=cv_maxmin,"n-truncado5"=cv_truncado)
x<-c(mean(a),mean(t_min),mean(t_max), mean(t_maxmin),mean(t_truncada))
y<-c(sd(a),sd(t_min),sd(t_max),sd(t_maxmin),sd(t_truncada))
return(data.frame("cv.n"=cv,"Media Simulada"=x,"Desviación Simulada"=y))
}
cv.n(a=pH)
## cv.n Media.Simulada Desviación.Simulada
## n 0.090 5.6 0.50
## n-min 0.087 5.6 0.49
## n-max 0.084 5.5 0.47
## n-min-max 0.081 5.6 0.45
## n-truncado5 0.081 5.6 0.45
3.Complete la siguiente tabla usando una función de R. Escriba una función que devuelva el parámetro Temperatura de la atmósfera estándar a una cierta altitud. Use la Dirección:
https://www.grc.nasa.gov/WWW/K-12/airplane/atmos.html
Se desea que la función rinda un mensaje que muestre que el valor de altitud solicitado por un usuario está fuera de rango para la tabla.
alturas<-c(0,100,200,300,400,500,1000,1500,2000,3000,4000,5000,6000,10000,15000)
tatm<-function(x){
if(x<=15000 & 0<=x) {
t<-59-0.00356*x
return(data.frame("Altura" = x, "Temperatura °F"=t))
}
else(print("Altura fuera de rango"))
}
tatm(alturas)
## Warning in if (x <= 15000 & 0 <= x) {: the condition has length > 1 and only the
## first element will be used
## Altura Temperatura..F
## 1 0 59.0
## 2 100 58.6
## 3 200 58.3
## 4 300 57.9
## 5 400 57.6
## 6 500 57.2
## 7 1000 55.4
## 8 1500 53.7
## 9 2000 51.9
## 10 3000 48.3
## 11 4000 44.8
## 12 5000 41.2
## 13 6000 37.6
## 14 10000 23.4
## 15 15000 5.6
4.Se recogió una muestra de suelo en una lata que pesaba 30.00 g. El peso de la muestra húmeda y de la lata fue de 180.45 g, en tanto que el peso seco incluyendo la lata fue de 147.62 g. Se determinó, en una medición anterior, que la densidad aparente era de 1.20 g cm-3. Con esta información cree una función de R que permita calcular el contenido de humedad volumétrico(chv) y gravimétrico(chg). Use la siguiente dirección como apoyo.
http://conservacion.cimmyt.org/es/component/docman/doc_view/1142-chs
Cree la función de modo que pueda ser calculado el contenido de humedad del suelo gravimétrico y volumétrico para cualquier densidad aparente dada , para una lata de peso constante de 30,00 gramos y para un peso de muestra de suelo con lata cualquiera.
Cree la función de modo que pueda ser calculado el contenido de humedad del suelo gravimétrico y volumétrico para cualquier densidad aparente dada , omitiendo el peso de la lata y considerando solo la muestra de suelo.
Suponga que se tienen n muestras de suelo, cree la función de modo que calcule el cvh y cvg promedio. Grafique en una sola figura los dos contenidos de humedad del suelo. Explique la relación encontrada.
ph<-rnorm(10, 175, 15)
ps<-rnorm(10, 140, 8)
da<-rnorm(10, 1.3, 0.4)
contenidoh<-function(x,y,z,p){
h<-x-p #x = Peso suelo humedo con lata
s<-y-p #y = Peso suelo seco con lata
z #z = Densidad aparente
p #p = Peso de la lata
HG<-((h-s)/s)*100
HV<-((h-s)/s)*100*z
options(digits = 4)
return(data.frame("Humedad Gravimetrica"=HG,"Humedad Volumetrica"=HV))
}
contenidoh(180.45,147.62,1.20,30)
## Humedad.Gravimetrica Humedad.Volumetrica
## 1 27.91 33.49
contenidoh(ph,ps,da,0)
## Humedad.Gravimetrica Humedad.Volumetrica
## 1 24.736 31.249
## 2 7.902 7.913
## 3 19.975 19.403
## 4 26.716 9.970
## 5 37.892 41.145
## 6 58.652 99.647
## 7 38.896 42.082
## 8 18.788 35.770
## 9 7.077 7.094
## 10 27.513 28.422