Имена данных в R дубликаты - PullRequest
0 голосов
/ 27 апреля 2020

Я просто сгенерировал пустой фрейм данных и затем заполнил его случайными данными, но у меня начались проблемы с именами столбцов, и в основном я хочу очистить такие имена и сделать их уникальными.

Я делюсь всем своим код, как я не знаю, что вызывает проблемы

df <- data.frame(ID=integer(),AA=character(),AAA=integer(),Z=double(),stringsAsFactors=FALSE) #empty dataframe
df <- data.frame(ID=c(1:10)) #Consecutive numbers
AA <- sample(c("yes","no"), 10, replace=TRUE, prob = c(0.53, 0.47)) #Random data
df$AA<-as.data.frame(AA)
AAA<-sample(22:60, size=10, replace=TRUE) #Random data
df$AAA<-as.data.frame(AAA)
df$Z<-df$Z <- with(df, (AA == 'yes') * 0.25 + (AAA < 30) * 0.25) #calculated field
df

и заголовок кадра данных, последний столбец должен быть Z не AA

   ID  AA AAA   AA
1   1 yes  56 0.25
2   2  no  53 0.00

затем я пытаюсь переименовать имя столбца с colnames(df)[4] <- "Z" и получил тот же результат.

Когда я смотрю на вывод Rstudio, фрейм данных выглядит

   ID  AA.AA AAA.AAA   Z
1   1   yes    56   0.25
2   2    no    53   0.00

Проблема возникает, когда я пытаюсь сделать некоторую описательную статистику

library("GGally")
ggpairs(df)
plot: [1,2] [===>---------------------------] 12% est: 1s Error in `[.data.frame`(xData, rows) : undefined columns selected

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 27 апреля 2020

Вы создаете вложенный фрейм данных внутри вашего фрейма данных. Попробуйте:

df <- data.frame(ID=c(1:10)) #Consecutive numbers
df$AA<- sample(c("yes","no"), 10, replace=TRUE, prob = c(0.53, 0.47)) #Random data
df$AAA<-sample(22:60, size=10, replace=TRUE) #Random data
df$Z <- with(df, (AA == 'yes') * 0.25 + (AAA < 30) * 0.25) #calculated field

GGally::ggpairs(df)

enter image description here

0 голосов
/ 27 апреля 2020
df <- data.frame(ID = 1:10,
                 AA = sample(c("yes","no"), 10, replace=TRUE, prob = c(0.53, 0.47)),
                AAA = sample(22:60, size=10, replace=TRUE)
                 )

library(dplyr)
df = df %>% 
  mutate(Z = (AA == 'yes') * 0.25 + (AAA < 30) * 0.25)


df
> df
   ID  AA AAA    Z
1   1 yes  36 0.25
2   2 yes  37 0.25
3   3  no  45 0.00
4   4 yes  28 0.50
5   5 yes  52 0.25
6   6 yes  43 0.25
7   7 yes  50 0.25
8   8 yes  39 0.25
9   9 yes  59 0.25
10 10  no  32 0.00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...