2017-09-07 4 views
1

Je voudrais concaténer le pourcentage de cette valeur sur une seule ligne. Disons que je:Comment concaténer le pourcentage d'une ligne dans une seule valeur?

dat<-data.frame(x1=c(1), x2=c(4), x3=c(5), stringsAsFactors = FALSE) 

Je voudrais avoir une valeur de concaténer dans la colonne comme cette dat$concat: [10,40,50] (chaque valeur est le pourcentage maintenant)

J'ai demandé précédemment comment Je peux concaténer, et la commande fonctionne plutôt bien:

dat$conc <- paste0("[",apply(dat,1,paste,collapse=","),"]") 

Comment puis-je le faire?

+1

Et vous acceptez les réponses à vos questions précédentes avant de poser de nouvelles. – PoGibas

Répondre

1

Si nous supposons que 5 représente 50%, il est aussi facile que de remplacer dat avec dat * .1, comme ceci:

dat <- data.frame(x1=c(1), x2=c(4), x3=c(5), stringsAsFactors = FALSE) 

dat$conc <- paste0("[",apply(dat*.1,1,paste,collapse=","),"]") 

    x1 x2 x3   conc 
1 1 4 5 [0.1,0.4,0.5] 

Mais je ne veux noter que si 5 on entend pour signifier 5%, pas 50%, alors vous voulez remplacer dat avec dat/100, comme ceci:

dat <- data.frame(x1=c(1), x2=c(4), x3=c(5), stringsAsFactors = FALSE) 

dat$conc <- paste0("[",apply(dat/100,1,paste,collapse=","),"]") 

    x1 x2 x3    conc 
1 1 4 5 [0.01,0.04,0.05] 

EDIT:

pour obtenir le pourcentage de chaque valeur relati ve à sa rangée (c.-à-d. valeur/rowSums (x)), essayez ceci:

dat <- data.frame(x1=c(7),x2=c(4),x3=c(5),stringsAsFactors=FALSE) 

dat$conc <- paste0("[",apply(dat/rowSums(dat),1,paste,collapse=","),"]") 

Sortie:

x1 x2 x3     conc 
1 7 4 5 [0.4375,0.25,0.3125] 
+0

Mon mauvais: mon exemple est clairement trompeur. Je me demandais comment le faire si j'ai: > dat <-data.frame (x1 = c (7), x2 = c (4), x3 = c (5), stringsAsFactors = FAUX) Donc, pour obtenir: [0.4375,0.25,0.3125] –

+0

@MikeJJ - D'accord, je peux ajuster cela, mais comment ces pourcentages sont-ils calculés, comme 0.4375? – www

+0

le pourcentage est pour chaque ligne. 0.4375 = 7/(7 + 3 + 5) –