0
votes

ajout de plusieurs colonnes incluent na dans dataframe dans r

J'ai dataframe comme ceci:

 Entrez la description de l'image ici

Je souhaite créer une nouvelle colonne qui est la somme des autres colonnes en ignorant na s'il y a une valeur numérique dans une rangée. Mais si toute valeur (comme la deuxième ligne) d'une ligne est NA, la colonne de somme obtient na .


1 commentaires

df $ col <- rowSums (df, na.rm = TRUE)


3 Réponses :


1
votes

Disons que votre bloc de données s'appelle df

cbind(df, apply(df, 1, function(x){if (all(is.na(x))) {NA} else {sum(x, na.rm = T)}))

Notez que si votre bloc de données a d'autres colonnes, vous devrez restreindre l'appel df dans appliquer pour n'être que les colonnes que vous recherchez.


0 commentaires

1
votes

Comme il s'agit de votre première activité ici sur SO, vous devriez jeter un œil à ceci qui décrit comment un et des exemples reproductibles sont faits. Cela est certainement nécessaire à l'avenir, si vous avez d'autres questions. Une image n'est généralement pas acceptée comme point de départ.

Heureusement, votre table était petite. Je l'ai transformé en tribble, puis j'ai utilisé rowSums pour calculer les nombres que vous semblez vouloir.

df <- tibble::tribble(
  ~x, ~y, ~z,
  6000, NA, NA,
  NA, NA, NA,
  100, 7000, 1000,
  0, 0, NA
)

df$sum <- rowSums(df, na.rm = T)
df
#> # A tibble: 4 x 4
#>       x     y     z   sum
#>   <dbl> <dbl> <dbl> <dbl>
#> 1  6000    NA    NA  6000
#> 2    NA    NA    NA     0
#> 3   100  7000  1000  8100
#> 4     0     0    NA     0

Créé le 2020-06- 15 par le package reprex (v0.3.0)


0 commentaires

0
votes

Vous pouvez compter les valeurs NA code> dans df code>. Si dans une rangée, il n'y a pas de valeur non code> NA code> Vous pouvez attribuer une sortie sous forme na code> ou calculer la SUM de ligne autrement à l'aide de rowsums code>.

df <- structure(list(x = c(6000, NA, 10000, 100, 0), y = c(NA, NA, 
NA, 7000, 0), z = c(NA, NA, NA, 1000, NA)), class = "data.frame", 
row.names = c(NA, -5L))


0 commentaires