<
查看: 1067| 回复: 9
收起左侧

[统计--软件] R语言编程的一个问题

wx2123 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   113
84%
16%
21

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
如果有df1和df2两个dataframe,其行列如下:

x1 <- c(4,1,3,2,3,4,1,3,2,3). .и
x2 <- c(7,5,6,4,4,7,5,6,4,4)
df1 <- data.frame(x1,x2)
df1

y1 <- c(1,1,1,1,1,1,1,1,1,1).--
y2 <- c(2,2,2,2,2,2,2,2,2,2)
y3 <- c(3,3,3,3,3,3,3,3,3,3).--
y4 <- c(4,4,4,4,4,4,4,4,4,4)
y5 <- c(5,5,5,5,5,5,5,5,5,5)-baidu 1point3acres
y6 <- c(6,6,6,6,6,6,6,6,6,6). Waral dи,
y7 <- c(7,7,7,7,7,7,7,7,7,7)
y8 <- c(8,8,8,8,8,8,8,8,8,8)
df2 <- data.frame(y1,y2,y3,y4,y5,y6,y7,y8)
df2

现在需要计算df1$x1里面的第一个数4和df1$x2里面的第一个数7对于df2里面对应的y4和y7的乘积。
如果按照下面的算法,会得到10行n列。第一列a为10个28,第二列b为10个5,…,第n列为10个12。

df1$a <-df2$y7*df2$y4
df1$b <-df2$y5*df2$y1.google  и
#..... check 1point3acres for more.
df1$n <-df2$y4*df2$y3
-baidu 1point3acres
但是我现在需要把他们放到10行1列,也就是这样:
28
5

.... 1point3acres
...
12. .и

这个怎么实现呢?多谢。
. check 1point3acres for more.


. 1point 3acres




上一篇:有 Gatech OMSCS 的小伙伴吗?
下一篇:SAS ADV 4/8/21 931过 经验总结
wstutenny 2021-4-8 02:47:05 来自APP | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   35
100%
0%
0
你的df2全是常数列,不明白为什么要generate一个这样的df来实现你的目的。如果是想在df1里面直接增加一列,直接df1$a=c()直接输入就好。如果非要像你写的那样弄(虽然不明白到底要干嘛),你可以df1[1,c(“a”,”b”,....”n”)],这个就是你要的那个向量。
回复

使用道具 举报

benchlover 2021-4-8 02:49:01 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   28
85%
15%
5
你好! ..
似乎只要把你的计算结果转置,用t(),然后取转置后的结果的任意一列[ ,x]就可以咯。
感觉计算过程可以用类似apply优化。
希望有用。谢谢。
回复

使用道具 举报

benchlover 2021-4-8 02:53:23 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   28
85%
15%
5
wstutenny 发表于 2021-4-8 02:47
. 1point3acres.com 你的df2全是常数列,不明白为什么要generate一个这样的df来实现你的目的。如果是想在df1里面直接增加一列, ...
. .и
你好!
我猜想有可能df2只是一个例子,如果df1是密码,df2是字典,计算结果是明码。可以把df2变成无序的数组来看这个问题。谢谢。
回复

使用道具 举报

 楼主| wx2123 2021-4-8 02:54:28 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   113
84%
16%
21
benchlover 发表于 2021-4-7 13:49
你好!
似乎只要把你的计算结果转置,用t(),然后取转置后的结果的任意一列[ ,x]就可以咯。
感觉计算过程 ...

我也觉得应该用apply()或者lapply()啥的,但是还没有figure out..
回复

使用道具 举报

 楼主| wx2123 2021-4-8 02:56:05 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   113
84%
16%
21
wstutenny 发表于 2021-4-7 13:47
你的df2全是常数列,不明白为什么要generate一个这样的df来实现你的目的。如果是想在df1里面直接增加一列, ...
. ----
这样写可以把很多列合并成为1列,后面还有别的运算。
回复

使用道具 举报

 楼主| wx2123 2021-4-8 02:57:49 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   113
84%
16%
21
benchlover 发表于 2021-4-7 13:53
你好!
我猜想有可能df2只是一个例子,如果df1是密码,df2是字典,计算结果是明码。可以把df2变成无序的 ...

其实主要是数据量比较大。数少怎么都好算,多了以后就麻烦。
回复

使用道具 举报

wstutenny 2021-4-8 03:25:12 来自APP | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   35
100%
0%
0
benchlover 发表于 2021-04-07 11:53:23-baidu 1point3acres
你好!
我猜想有可能df2只是一个例子,如果df1是密码,df2是字典,计算结果是明码。可以把df2变成无序的数组来看这个问题。谢谢。
所以df1里面的4,7是df2里面的4,7列?那样的话可以先写一个function算df2里的列乘积,argument就是哪两列,然后apply套df1应该就行了吧。
回复

使用道具 举报

wstutenny 2021-4-8 03:27:04 来自APP | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   35
100%
0%
0
wx2123 发表于 2021-04-07 11:56:05
这样写可以把很多列合并成为1列,后面还有别的运算。
不太明白你的合并很多列是什么意思,as.vector?如果那样你全部弄完之后用rep也行,r里面dataframe的运算很慢,加上你的数据大,可能不是很好优化
回复

使用道具 举报

Chau 2021-4-8 07:45:06 来自APP | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   131
99%
1%
1
没太看明白df2为什么重复这么多,如果df2每一行都一样的话你要不要试试 df2[1, df1[, 1]] * df2[1, df1[, 2]]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

Advertisement
>
快速回复 返回顶部 返回列表