Jak dodać kolumnę w środku ramki danych R? Chcę sprawdzić, czy mam kolumnę o nazwie "LastName", a następnie dodać ją jako trzecią kolumnę, jeśli jeszcze nie istnieje.Czy kolumna istnieje i jak zmienić kolejność kolumn w ramce danych R
Odpowiedz
1) Test na istnienie: Użyj% w% na nazwach zmiennych, np.
> example(data.frame) # to get 'd'
> "fac" %in% colnames(d)
[1] TRUE
> "bar" %in% colnames(d)
[1] FALSE
2) można zasadniczo trzeba utworzyć nowy data.frame z pierwszej połowy starego, nowego kolumnie, a drugą połowę:
> bar <- data.frame(d[1:3,1:2], LastName=c("Flim", "Flom", "Flam"), fac=d[1:3,3])
> bar
x y LastName fac
1 1 1 Flim C
2 1 2 Flom A
3 1 3 Flam A
>
lub używając cbind:
> example(data.frame) # to get 'd'
> bar <- cbind(d[1:3,1:2],LastName=c("Flim", "Flom", "Flam"),fac=d[1:3,3])
> bar
x y LastName fac
1 1 1 Flim A
2 1 2 Flom B
3 1 3 Flam B
Jednym z podejść jest dodanie kolumny do końca ramki danych, a następnie użycie podzbioru w celu przeniesienia go do żądanej pozycji:
d$LastName <- c("Flim", "Flom", "Flam")
bar <- d[c("x", "y", "Lastname", "fac")]
Niezły! Nie widziałem tej sztuczki. Możesz też bezpośrednio przypisać ją do d również. –
Chciałbym połączyć tę odpowiedź z powyższym Dirkiem lub wybrać obie jako wybraną odpowiedź. Jest to tak oczywiste, że się rzucam, bo o tym nie myślę! –
To bardzo przydatne –
Spośród wielu głupich małych funkcji pomocniczych, które napisałem, to jest używane za każdym razem, gdy ładuję R. Po prostu tworzy listę nazw kolumn i indeksów, ale ciągle go używam.
##creates an object from a data.frame listing the column names and location
namesind=function(df){
temp1=names(df)
temp2=seq(1,length(temp1))
temp3=data.frame(temp1,temp2)
names(temp3)=c("VAR","COL")
return(temp3)
rm(temp1,temp2,temp3)
}
ni <- namesind
Użyj ni, aby zobaczyć swoje numery kolumn. (ni jest po prostu aliasem dla namesind, nigdy nie używam namesind ale myślałem, że to było lepsze imię na początku) Następnie jeśli chcesz wstawić twoją kolumnę powiedzmy, pozycja 12, a twoja data.frame nazywa się Bob z 20 kolumnami, to byłoby .
bob2 < - data.frame (BOB [1: 11] newcolumn BOB [12 20]
chociaż lubił dodatek na końcu i zmienić odpowiedź od Hadley oraz
Zawsze myślałem, że coś takiego jak append() [choć niefortunne jest to nazwisko] powinno być ogólną funkcją
## redefine append() as generic function
append.default <- append
append <- `body<-`(args(append),value=quote(UseMethod("append")))
append.data.frame <- function(x,values,after=length(x))
`row.names<-`(data.frame(append.default(x,values,after)),
row.names(x))
## apply the function
d <- (if(!"LastName" %in% names(d))
append(d,values=list(LastName=c("Flim","Flom","Flam")),after=2) else d)
Odpowiedź Dirka Eddelbuettela działa, ale nie trzeba podawać numerów wierszy ani podawać wpisów w kolumnie nazwiska. Ten kod powinien to zrobić dla ramki danych o nazwie df
:
if(!("LastName" %in% names(df))){
df <- cbind(df[1:2],LastName=NA,df[3:length(df)])
}
(to domyślne LastName
do NA
, ale można równie dobrze użyć „LastName='Smith'
”)
- 1. Identyfikowanie duplikatów kolumn w ramce danych R
- 2. Jak zmienić kolejność kolumn data.table?
- 3. Sqlite3: jak zmienić kolejność kolumn w tabeli?
- 4. Sprawdzanie identycznych kolumn w ramce danych w R
- 5. Upuszczanie kolumn w ramce danych
- 6. Wklej razem każdą parę kolumn w ramce danych w R?
- 7. Sprawdź, czy wartość istnieje w jednej ramce danych, czy nie.
- 8. Jak sprawdzić, czy tabela lub kolumna istnieje w bazie danych?
- 9. Sprawdzanie, czy kolumna istnieje w czytniku danych
- 10. Jak uzyskać klasy wszystkich kolumn w ramce danych?
- 11. Ustawianie kolejności kolumn w ramce danych pandy
- 12. iteracyjnego niektórych kolumn w ramce danych
- 13. Czy można zmienić kolejność kolumn w Projektancie raportów (oferty 2005)
- 14. R: Przypisywanie etykiet zmiennych kolumn kolumn danych
- 15. Jak zmienić nazwy kolumn danych w pyspark?
- 16. Czy istnieje "Domyślna kolejność według kolumn" w SQL Server?
- 17. Jak usunąć "." od nazw kolumn w ramce danych?
- 18. Jak zmienić kolejność zakładki KendoGrid?
- 19. Jak zmienić kolejność/zgrupowanie/poziom pandasowych kolumn MultiIndex?
- 20. Wypełnianie wartości w ramce danych w R?
- 21. Jak pokolorować określone komórki w ramce danych/tabeli w R?
- 22. suma zmiennych w ramce danych R
- 23. Potrzebuję "binaryzacji" niektórych danych w ramce danych w R
- 24. Tworzenie tabeli awaryjnych za pomocą wielu kolumn w ramce danych, w R
- 25. Jak zmienić kolejność bajtów danych binarnych
- 26. Szybkie zastępowanie wartości w ramce danych w R
- 27. Jak sprawdzić, czy kolumna w ramce danych pandy jest typu datetime? Jak sprawdzić, czy kolumna ma charakter liczbowy?
- 28. Kolejność kolumn w pandas.concat
- 29. Obliczanie średniej z dwóch kolumn w ramce danych
- 30. SAS: zmienić kolejność pól w kroku danych
Polecam przed użyciem cbind jako semantyki są dość skomplikowane: w zależności od danych wejściowych możesz otrzymać macierz lub dane.rame – hadley