全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
5707 6
2017-05-17
如下是数据框d
  Total              ActualValue
1  3,490.00         2326.66
2  3,770.00         2513.32
3  3,490.00         3490.00
4  4,090.00         4,090.00
5  3,392.00            0.00
6  2,727.00         2766.66
7  2,575.00         2575.00
8  2,580.00         2580.00
9  2,727.00         2045.01

相比较两列数的大小,如果ActualValue大于等于Total,则s(s初始值为0)累计加1,否则累计加0.
比如:第一行2326.66<3490,则s=0
第二行2513.32<3,770.00 ,则s累计还是0
第三行3490.00=3,490.00 ,s累计为1
第四行4,090.00=4,090.00,s累计为2
  ……

求问这段代码怎么编写,我用for+if的语言,提示“条件的长度大于一,因此只能用其第一元素”,不知道该怎么改,求教!

二维码

扫码加我 拉你入群

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

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

全部回复
2017-5-17 15:54:20
count <- d$ActalValue >= d$Total
result <- sum(count)
二维码

扫码加我 拉你入群

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

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

2017-5-17 16:12:46
累計可以用cumsum
二维码

扫码加我 拉你入群

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

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

2017-5-17 16:44:23
xugami 发表于 2017-5-17 15:54
count = d$Total
result
如果希望当Total大于ActualValue的时候,输出的s=Total-ActualValue,然后每条符合条件的数据,s累加得到最终的s该怎么办呀?
二维码

扫码加我 拉你入群

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

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

2017-5-17 22:02:09
复制代码


  Total ActualValue compaire result
1  3490     2326.66    FALSE      0
2  3770     2513.32    FALSE      0
3  3490     3490.00     TRUE      1
4  4090     4090.00     TRUE      2
5  3392        0.00    FALSE      2
6  2727     2766.66     TRUE      3
7  2575     2575.00     TRUE      4
8  2580     2580.00     TRUE      5
9  2727     2045.01    FALSE      5
二维码

扫码加我 拉你入群

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

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

2017-5-17 22:11:39
复制代码

二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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