Azáltal, hogy értékeket a két oszlopot dataframe véletlen változások fejlécében eredmény oszlop

szavazat
0

Van egy adat keretet, és szeretné, hogy adjunk egy „teljes” oszlopot az eredmény összege a sorok.

Kiindulópont:

var1 var2
  1    2
  1    2
  1    2

Kívánt eredmény:

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

Saját kód nem ez, de megváltoztatja a nevét, a fejlécben a „teljes” oszlop fejlécében var1 oszlopban. Miért? Mi lehetne jobb megoldás?

Itt van a kód:

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

Eredmény:

var1 var2 **var1**
  1    2    3
  1    2    3
  1    2    3
A kérdést 24/10/2019 11:59
a forrás felhasználó
Más nyelveken...                            


3 válasz

szavazat
0

Akkor youe a mutate()-funkcióhoz

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
Válaszolt 24/10/2019 12:05
a forrás felhasználó

szavazat
0

Ez a munka, és nem átnevezni az oszlopot. [i]vissza data frame, ahol a [[i]]hozamok egy numeric. Tehát, ha szeretné adni az egyes számokat.

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]] 
}
Válaszolt 24/10/2019 12:09
a forrás felhasználó

szavazat
1

A helyes módon kell csinálni a következő:

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

figyelmét a kettős konzolok, a megoldás működik, ha használja dupla szögletes zárójelek helyett egyetlen konzolok

mint Ronak javasolta:

df$total = rowSums(df)
Válaszolt 24/10/2019 12:09
a forrás felhasználó

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