J'ai un cadre de données de 200 rangées de 6 colonnes. Je suis intéressé à calculer le total des temps qu'une valeur dans le col A est inférieure à un nombre spécifique. Le nombre peut être codé dur. Je ne sais pas où commencer ... p>
5 Réponses :
Pour compter combien de valeurs sont inférieures à un nombre quelconque, vous pouvez utiliser ? somme code>
L'utilisation de la somme de votre condition fonctionnera. Les valeurs logiques sont converties à 0 pour FALSE et 1 pour un vrai sommation sur un logique vous indique combien de valeurs sont vraies.
dat <- as.data.frame(matrix(1:36,6,6)) colnames(dat) <- paste0("Col", LETTERS[1:6]) dat$ColA # [1] 1 2 3 4 5 6 dat$ColA < 3 # [1] TRUE TRUE FALSE FALSE FALSE FALSE sum(dat$ColA < 3) # [1] 2
Pour un problème légèrement plus complexe, utilisez le "qui" pour dire "la somme" où sommeillir: Si DF est la trame de données:
sum(DF[which(DF[,1]>30 & DF[,4]>90),2])
tandis que la réponse Dites si vous souhaitez résumer les valeurs au lieu de compter Vous pouvez utiliser: p> ou s'il y a Ce qu'il arrive de créer Un vecteur booléen de Columna qui est vrai / faux basé sur votre conditionnel. Ensuite, vous prenez un sous-ensemble du Dataframe d'origine et utilisez-le dans ce cas pour faire la somme de la centimaire. P> Voici un exemple que vous pouvez utiliser pour l'essayer: P> somme (Columna df $
somme (df $ $ colonne
na code > Valeurs Utilisation: P>
Somme (df $ $ Columna
somme (df [(df $ chronique
df = data.frame(colA=c(1, 2, 3, 4, NA), colB=c('a', NA, 'c', 'd', 'e'))
# Count
sum(df$colA) # NA
sum(df$colA, na.rm=TRUE) # 10 This is actually sum of values since colA wasn't turned into vector of booleans
sum(df$colA > 0, na.rm=TRUE) # 4
sum(df$colA > 2, na.rm=TRUE) # 2
sum((df$colA > 2) & (df$colB == 'd'), na.rm=TRUE) # 1
# Sum of values
sum(df$colA, na.rm=TRUE) # 10
sum(df[df$colA > 0,]$colA, na.rm=TRUE) # 10
sum(df[df$colA > 2,]$colA, na.rm=TRUE) # 7
bn_vector = (df$colA > 2)&(df$colB=='d') # Boolean vector
sub_df = df[bn_vector,] # Subset of the dataframe. Leaving the second argument in [] empty uses all the columns
sub_df_colA = df[bn_vector, 'colA'] # Content of column 'colA' which is vector of numbers
sum(sub_df$colA) # 4
sum(sub_df_colA) # 4
ozone <-c (41,97,97) p>
solar.r <-c (190.267.272) p>
Wind <-C (7.4,6.3.5.7) P>
TEMP <-C (67,92,92) P>
mois <-c (5,7,7) p>
jour <-c (1,8,9) p>
TBL <-Data.frame (ozone, solaire, vent, temp, mois, jour) p>
tbl p> blockQuote>
ozone | Solar.R | Vent | Temp | Mois | Jour 1 41 | 190 | 7.4 | 67 | 5 | 1 2 97 | 267 | 6.3 | 92 | 7 | 8 3 97 | 272 | 5.7 | 92 | 7 | 9 P>
SUM (TBL $ TEMP) / SUM (! IS.NA (TBL $ TEMP)) P> blockQuote>
[1] 84 P>
S'il vous plaît ne postez pas de réponses au code seulement; fournir une explication de la façon dont le code fonctionne et pourquoi est important. De plus, vous devriez formater votre code pour améliorer sa lisibilité.
très bonne réponse. Le code est un message à d'autres programmeurs