Делает столбец, существуют и как перестроить столбцы в кадре данных R

Попробуйте добавить в файл ~ / .gitconfig следующее:

[http]
    proxy = http://proxy:8080
[https]
    proxy = http://proxy:8080
[url "https://"]
    insteadOf = git://
23
задан JD Long 24 July 2009 в 14:06
поделиться

6 ответов

1) Testing for existence: Use %in% on the colnames, e.g.

> example(data.frame)    # to get 'd'
> "fac" %in% colnames(d)
[1] TRUE
> "bar" %in% colnames(d)
[1] FALSE

2) You essentially have to create a new data.frame from the first half of the old, your new column, and the second half:

> 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
> 
18
ответ дан 29 November 2019 в 01:43
поделиться

One approach is to just add the column to the end of the data frame, and then use subsetting to move it into the desired position:

d$LastName <- c("Flim", "Flom", "Flam")
bar <- d[c("x", "y", "Lastname", "fac")]
23
ответ дан 29 November 2019 в 01:43
поделиться

или используя 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
1
ответ дан 29 November 2019 в 01:43
поделиться

Я всегда думал, что что-то вроде append () [хотя неудачное название] должно быть общей функцией

## 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)
1
ответ дан 29 November 2019 в 01:43
поделиться

Ответ Дирка Эддельбюттеля работает, но вам не нужно указывать номера строк или указывать записи в столбце фамилии. Этот код должен делать это для фрейма данных с именем df :

if(!("LastName" %in% names(df))){
    df <- cbind(df[1:2],LastName=NA,df[3:length(df)])
}

(по умолчанию с LastName до NA , но вы также можете легко использовать " ] LastName = 'Smith' ")

2
ответ дан 29 November 2019 в 01:43
поделиться

Из множества глупых маленьких вспомогательных функций, которые я написал, это используется каждый раз, когда я загружаю R. Он просто составляет список имен столбцов и индексов, но я использую его постоянно.

##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

Используйте ni, чтобы увидеть номера столбцов. (ni - это просто псевдоним для namesind, я никогда не использую namesind, но подумал, что изначально это было лучшее имя). Затем, если вы хотите вставить свой столбец, скажем, в позицию 12, и ваш data.frame называется bob с 20 столбцами, это будет

bob2 <- data.frame (bob [, 1: 11], newcolumn, bob [, 12: 20]

, хотя мне понравилось добавить в конце и изменить ответ от Хэдли также.

2
ответ дан 29 November 2019 в 01:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: