全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
8942 19
2022-02-27
请问在运用eval(parse)函数时,如何做到每行单独调用?现在想将参数表里的每个等级按年份匹配到主表中,示例数据集table如下:
年份     等级     参数
1           A
2           A
3           B
3           C
1           A
参数表Para:
等级    Y1    Y2     Y3     Y4
A
B
C
D
TABEL$P1 <- eval(parse(text=paste0("PARA$Y",TABEL$年份)))[TABLE$等级]


似乎R代码不同于SAS是每行单独调用,在parse函数里最终只会调用到最后一行的PARA$Y1,赋值给所有人。
此外很多时候我想逐行写代码根据前面某一列的数值去进行运算,他都会调用出整列,请问这种学名是叫什么啊?谢谢大神!



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2022-2-28 09:51:54
用 dplyr::left_join() 合并就行
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-2-28 11:57:01
尝试过不用eval parse函数,改为Table$参数 <- Parameter[match(Table$等级,Parameter$等级),match(paste0("Y",Table$年份),colnames(Parameter))。但是一致判定[x,y]中y是一个list,不能逐行返回结果而是返回了一个list,把出现过的Y都匹配进来了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-2-28 11:57:08
还有一个逐行运算的例子,比如我想对A列每行的数和10取最小值,TABLE$B <- min(TABLE$A,10)是直接取的整个A列的最小值和10去比。而不是每行去运行,请问该如何做到?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-2-28 11:59:49
s609078902 发表于 2022-2-28 09:51
用 dplyr::left_join() 合并就行
将参数表参数合并为一列,列名和行名合并去进行匹配?比如A_Y1确实做到了,但是因为我涉及到后面很多运算,所以这个方法有些繁琐
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-2-28 23:00:44
K1ngFjsh 发表于 2022-2-28 11:59
将参数表参数合并为一列,列名和行名合并去进行匹配?比如A_Y1确实做到了,但是因为我涉及到后面很多运算 ...
你把参数表的值填上,我再看看。应该变换下数据格式就行了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群