r - Finding value that corresponds to same location in another matrix -


i trying factor scores each person. factors stored in dataframe factors need average of values in dataframe called data of values correspond factors , store in new column in data. apologize terrible explanation. hope example help, , happy answer questions!

factors<-data.frame(c(na,2,na),c(na,3,1)) colnames(factors)<-c("v1","v2") row.names(factors)<-c("col1data","col2data","col3data") factors  data<-data.frame(c(2,4,2),c(1,1,2),c(3,3,3)) colnames(data)<-c("col1data","col2data","col3data") row.names(data)<-c("person1","person2","person3") data #in dataframe factors row col2data present (i.e. not na) under factor v1 #go dataframe data each person , make new column called v1 holds value of col2data #do factor v2 , average values come 1 number each person. final result data<-data.frame(c(2,4,2),c(1,1,2),c(3,3,3),c(1,1,2),c(2,3,2.5)) colnames(data)<-c("col1data","col2data","col3data","v1","v2(avg col2 , col3)") row.names(data)<-c("person1","person2","person3") data 

i try break steps (as understand process):

  • find row names in column of dataframe factors not na
  • match row names dataframe data columns.
  • sum matching row names in data , store in new variable called column name of column in data (eg v1) each person

  • you can taking row means of data limited appropriate columns:

    cbind(data, apply(factors, 2, function(x) rowmeans(data[,!is.na(x),drop=false]))) #         col1data col2data col3data v1  v2 # person1        2        1        3  1 2.0 # person2        4        1        3  1 2.0 # person3        2        2        3  2 2.5 

    Comments

    Popular posts from this blog

    python - TypeError: start must be a integer -

    c# - DevExpress RepositoryItemComboBox BackColor property ignored -

    django - Creating multiple model instances in DRF3 -