0
v1 <- c("red", "a","b","c",1, 3, 5, 7)
v2 <- c("red", "a","b","c",1, 3, 5, 7)
v3 <- c("blue", "a","b","d",2, 4, 6, 8)
v4 <- c("blue", "a","b","d",2, 4, 6, 8)
v5 <- c("blue", "a","b","d",2, 4, 6, 8)

df1 <- data.frame(rbind(v1,v2,v3,v4,v5))

v6 <- c("red", 2,2,4,2)
v7 <- c("blue",1,1,0,1)

df2 <- data.frame(rbind(v6,v7))
colnames(df2) <- c("Y1", "Y2", "Y3", "Y4", "Y5")

> df1
         X1 X2 X3 X4 X5 X6 X7 X8
    v1  red  a  b  c  1  3  5  7
    v2  red  a  b  c  1  3  5  7
    v3 blue  a  b  d  2  4  6  8
    v4 blue  a  b  d  2  4  6  8
    v5 blue  a  b  d  2  4  6  8




  > df2
     Y1 Y2 Y3 Y4 Y5
v6  red  2  2  4  2
v7 blue  1  1  0  1

df2 から 4 つの数値列を取得し、それらを係数 (赤、青) 内と列内 (それぞれ) で乗算するにはどうすればよいですか? (v6, X2) を (v1:v2,X5) で乗算するとします。

私がやろうとしていることをさらに明確にする必要がある場合は、尋ねてください。

編集:明確にするために、上記の例のすべての可能な乗算を行いたいと思います。

edit2: 編集された colnames

4

1 に答える 1

1

私があなたの目的を正しく理解していれば、考えられる解決策が 2 つあります。使用できますmatch

> df3<-df1
> df3[,5:8]<-df3[,5:8]*df2[match(df1[,1],df2[,1]),2:5]
> df3
     X1 X2 X3 X4 X5 X6 X7 X8
v1  red  a  b  c  2  6 20 14
v2  red  a  b  c  2  6 20 14
v3 blue  a  b  d  2  4  0  8
v4 blue  a  b  d  2  4  0  8
v5 blue  a  b  d  2  4  0  8

または、次を使用できますmerge

> df3<-merge(df1,df2,by=1)
> df3[,5:8]<-df3[,5:8]*df3[,9:12]
> df3[,1:8]
    X1 X2 X3 X4 X5 X6 X7 X8
1 blue  a  b  d  2  4  0  8
2 blue  a  b  d  2  4  0  8
3 blue  a  b  d  2  4  0  8
4  red  a  b  c  2  6 20 14
5  red  a  b  c  2  6 20 14
于 2013-10-23T18:30:46.823 に答える