web-dev-qa-db-fra.com

En utilisant R, obtenir un "Impossible de lier les données car certains arguments ont le même nom" en utilisant dplyr: sélectionnez

#use readtable to create data frames of following unzipped files below
x.train <- read.table("UCI HAR Dataset/train/X_train.txt")
subject.train <- read.table("UCI HAR Dataset/train/subject_train.txt")

y.train <- read.table("UCI HAR Dataset/train/y_train.txt")
x.test <- read.table("UCI HAR Dataset/test/X_test.txt")
subject.test <- read.table("UCI HAR Dataset/test/subject_test.txt")

y.test <- read.table("UCI HAR Dataset/test/y_test.txt")
features <- read.table("UCI HAR Dataset/features.txt")
activity.labels <- read.table("UCI HAR Dataset/activity_labels.txt")   





colnames(x.test) <- features[,2]
dataset_test <- cbind(subject.test,y.test,x.test)
colnames(dataset_test)[1] <- "subject"
colnames(dataset_test)[2] <- "activity"

test <- select(features, V2)

dataset_test <- select(dataset_test,subject,activity)

[1] Error: Can't bind data because some arguments have the same name

-features est une trame de données à deux colonnes avec les deuxièmes colonnes contenant les noms de x.test

-subject.test est un bloc de données à colonne unique

-y.test est un bloc de données à colonne unique

-x.test est une large trame de données

Après avoir nommé et lié ces trames de données, j'ai essayé d'utiliser dplyr :: select pour sélectionner certaines trames.

Cependant, je reçois une erreur en retournant dataset_test

"Erreur: impossible de lier des données car certains arguments portent le même nom"

Cependant, test ne renvoie pas d'erreur et filtre correctement.

Pourquoi la différence de comportement?

Les données que j'utilise peuvent être téléchargées sur

https://d396qusza40orc.cloudfront.net/getdata%2Fprojectfiles%2FUCI%20HAR%20Dataset.Zip

les sources de données correspondent aux noms de variables, sauf que "_" est utilisé à la place de "."

dput

> dput(head(x.test[,1:5],2))
structure(list(V1 = c(0.25717778, 0.28602671), V2 = c(-0.02328523, 
-0.013163359), V3 = c(-0.014653762, -0.11908252), V4 = c(-0.938404, 
-0.97541469), V5 = c(-0.92009078, -0.9674579)), row.names = 1:2, class = "data.frame")

> dput(head(subject.test,2))
structure(list(V1 = c(2L, 2L)), row.names = 1:2, class = "data.frame")

> dput(head(y.test,2))
structure(list(V1 = c(5L, 5L)), row.names = 1:2, class = "data.frame")

> dput(head(features,2))
structure(list(V1 = 1:2, V2 = c("tBodyAcc-mean()-X", "tBodyAcc-mean()-Y"
)), row.names = 1:2, class = "data.frame")
6
Doptima

Cette erreur est souvent causée par une trame de données ayant des colonnes avec des noms identiques , cela devrait être la première chose à vérifier. J'essayais de vérifier ma propre trame de données avec les fonctions d'assistance de dplyr select (start_with, contains, etc.), mais même celles-ci ne fonctionneront pas, vous devrez donc peut-être exporter vers un fichier csv pour vérifier dans Excel ou un autre programme ou utiliser fonctions de base pour vérifier noms de colonnes en double .

1
H5470