R中的数据帧名称重复
我只是生成了一个空的数据框,然后用随机数据填充它,但开始出现列名称的问题,基本上我想清除这些名称并使它们唯一 我正在分享我的全部代码,因为我不知道是什么引起了麻烦R中的数据帧名称重复,r,dataframe,R,Dataframe,我只是生成了一个空的数据框,然后用随机数据填充它,但开始出现列名称的问题,基本上我想清除这些名称并使它们唯一 我正在分享我的全部代码,因为我不知道是什么引起了麻烦 df <- data.frame(ID=integer(),AA=character(),AAA=integer(),Z=double(),stringsAsFactors=FALSE) #empty dataframe df <- data.frame(ID=c(1:10)) #Consecutive numbers A
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
然后,我尝试使用
colnames(df)[4]重命名列名,您正在数据帧内创建嵌套的数据帧。尝试:
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)
df您似乎在data.frame中存储data.frames和矩阵。你通常不会这么做。通常,您只需在data.frame中存储原子向量。你想要这样一个奇怪的结构有什么原因吗?或者这真的是一个需要解决的问题。Hi-MrFlick在数据帧中嵌套东西是需要解决的问题,现在我知道这不是一个好的做法。有趣的解决方案James肯定dplyr是最好的库之一
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
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
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)