Προσθέτοντας τιμές των δύο στηλών σε dataframe δοκιμές πραγματοποιώντας αλλαγές κεφαλίδα της στήλης αποτελέσματος

ψήφοι
0

Έχω ένα πλαίσιο δεδομένων και θέλετε να προσθέσετε μια στήλη «συνολική» με το αποτέλεσμα του αθροίσματος των σειρών.

Αφετηρία:

var1 var2
  1    2
  1    2
  1    2

Επιθυμητό αποτέλεσμα:

var1 var2 total
  1    2    3
  1    2    3
  1    2    3

κωδικός μου το κάνει αυτό, αλλά αλλάζει το όνομα του στην κεφαλίδα της στήλης «συνολική» στην κεφαλίδα της στήλης var1. Γιατί; Τι θα μπορούσε να είναι μια καλύτερη λύση;

Εδώ είναι ο κωδικός μου:

df<-data.frame( var1=c(1,1,1), var2=c(2,2,2))
df[total]<-0

for (i in 1:2 ){
  df$total = df$total + df[i] 
}
df

Αποτέλεσμα:

var1 var2 **var1**
  1    2    3
  1    2    3
  1    2    3
Δημοσιεύθηκε 24/10/2019 στις 11:59
πηγή χρήστη
Σε άλλες γλώσσες...                            


3 απαντήσεις

ψήφοι
0

Μπορείτε να youe το mutate()-Λειτουργία

library(tidyverse)

df<-df%>%mutate(total=rowsum(var1,var2))

> df
  var1 var2 total
1    1    2     3
2    1    2     3
3    1    2     3
Απαντήθηκε 24/10/2019 στις 12:05
πηγή χρήστη

ψήφοι
0

Αυτό θα λειτουργήσει και δεν θα μετονομάσει τη στήλη σας. [i]επιστρέφει ένα data frameόπου, όπως [[i]]επιστρέφει ένα numeric. Έτσι, θέλετε να προσθέσετε μεμονωμένους αριθμούς.

df<-data.frame( "var1"=c(1,1,1), "var2"=c(2,2,2))
df["total"]<-0

for (i in 1:2){
  df$total = df$total + df[[i]] 
}
Απαντήθηκε 24/10/2019 στις 12:09
πηγή χρήστη

ψήφοι
1

το σωστό τρόπο για να το κάνουμε είναι οι εξής:

df$total = df$var1 + df$var2
df[["total"]] = df[["var1"]] + df[["var2"]]

σημειώστε τις διπλές αγκύλες, η λύση σας θα λειτουργήσει αν χρησιμοποιείτε διπλή παρένθεση αντί για ενιαίο παρένθεση

όπως προτείνεται Ronak:

df$total = rowSums(df)
Απαντήθηκε 24/10/2019 στις 12:09
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more