[R] Assignment problems
Rui Barradas
ruipbarradas at sapo.pt
Sun Apr 22 21:34:02 CEST 2012
Hello,
phillip03 wrote
>
> The text below is a part of, some work I have to do, which is due in 2
> days and I am strung up with a lot of other stuff, so I was hoping someone
> would take 5 mins and help me ??
>
> Here is a part of my data.frame:
>
> year country1 country2 contig comlang pop1 gdp1
> pop2 gdp2 rta dist avgflow
> 1 1992 AUS AUT 0 0 17.4950008 321708.281
> 7.7825189 194684.078 0 15608.4 1.075999e+02
> 2 1992 AUS BEL 0 0 17.4950008 321708.281
> 10.0450001 231762.094 0 16319.2 4.767162e+02
> 3 1992 AUS CAN 0 1 17.4950008 321708.281
> 28.5195980 570291.188 0 15391.1 7.456945e+02
> 4 1992 AUS CHE 0 0 17.4950008 321708.281
> 6.8750000 249471.422 0 16170.1 4.625214e+02
> 5 1992 AUS DEU 0 0 17.4950008 321708.281
> 80.6240005 2062141.500 0 15935.1 2.047573e+03
> 6 1992 AUS DNK 0 0 17.4950008 321708.281
> 5.1700001 150195.484 0 15725.5 1.453406e+02
> 7 1992 AUS ESP 0 0 17.4950008 321708.281
> 39.0677490 612585.250 0 17072.9 2.106880e+02
> 8 1992 AUS FIN 0 0 17.4950008 321708.281
> 5.0419998 109859.438 0 14849.5 2.025125e+02
> 9 1992 AUS FRA 0 0 17.4950008 321708.281
> 57.2422981 1371706.000 0 16513.0 1.070802e+03
> 10 1992 AUS GBR 0 1 17.4950008 321708.281
> 57.9023476 1071537.375 0 16602.3 2.279130e+03
> 11 1992 AUS GRC 0 0 17.4950008 321708.281
> 10.3699999 102022.352 0 14845.6 4.164985e+01
> 12 1992 AUS IRL 0 1 17.4950008 321708.281
> 3.5490999 54272.410 0 16895.0 1.076323e+02
> 13 1992 AUS ISL 0 0 17.4950008 321708.281
> 0.2611000 6976.168 0 16443.6 2.190602e+01
> 14 1992 AUS ITA 0 0 17.4950008 321708.281
> 56.7976494 1265800.125 0 15855.4 9.683720e+02
> 15 1992 AUS JPN 0 0 17.4950008 321708.281
> 124.2289963 3766884.000 0 7827.1 1.026065e+04
> 16 1992 AUS NLD 0 0 17.4950008 321708.281
> 15.1780005 348224.562 0 16227.5 6.510009e+02
> 17 1992 AUS NOR 0 0 17.4950008 321708.281
> 4.2863998 127170.328 0 15646.2 9.357240e+01
> 18 1992 AUS NZL 0 1 17.4950008 321708.281
> 3.5316999 40706.199 1 2736.4 2.267670e+03
> 19 1992 AUS PRT 0 0 17.4950008 321708.281
> 9.9630003 102890.258 0 17625.3 2.611476e+02
> 20 1992 AUS SWE 0 0 17.4950008 321708.281
> 8.6680002 264822.875 0 15385.4 4.653388e+02
>
>
> there is 3400 observations.
>
> 3.1.1. Construct a dummy variable, EMU, that in any given year takes the
> value 1 if both countries are members of the EMU and 0 otherwise. How big
> a proportion of the observations are among EMU member countries?
>
> This problem is solved with:
>
> euro<-c("AUT","BEL","DEU","ESP","FIN","FRA","GRC","IRL","ITA","NLD","PRT")
> countries<-data.frame(country1,country2,stringsAsFactors=FALSE)
> data1<-cbind(data,EMU=Reduce(`&`, lapply(countries, function(x) x %in%
> euro)))
>
> data1[EMU==TRUE,13]
>
> a<-table(EMU)
>
>
> 3.1.2. Are the member and non-member country-pairs alike?
>
> What I need here is:
> I want to find the mean of avgflow, but only for the data where 2
> countries are in the euro vector/if EMU=TRUE ?
> I have tried with:
>>avgflowONLY<-cbind(avgflow,EMU)
>
>> NEWavgflow<-rep(0,nrow(avgflowONLY))
>
>> for (i in 1:nrow(avgflowONLY)){if
>> (EMU==1){NEWavgflow[i]<-mean(avgflow[i])}}
>
> BUT it gives me:
> Warning messages:
> 1: In if (EMU == 1) { ... :
> the condition has length > 1 and only the first element will be used
> etc. ???
>
You're forgeting the index in the conditon, EMU[i] == 1.
Note that since EMU is a logical vector, you don't need the explicit
comparison.
If you just want the mean of avgflow where EMU == TRUE, this is much
simpler, but
returns one value, not a vector.
mean(avgflow[ EMU ])
Hope this helps,
Rui Barradas
--
View this message in context: http://r.789695.n4.nabble.com/Assignment-problems-tp4578672p4578739.html
Sent from the R help mailing list archive at Nabble.com.
More information about the R-help
mailing list