【发布时间】:2014-10-22 07:53:37
【问题描述】:
我是 R 新手,不知道如何从以下数据中获得正确的输出:
我的数据:
row1 101 woody 5
row2 101 woody 0
row3 111 kiln 23
row4 200 weez 2
row5 315 rowt 0
例如,在第 3 行,第 3 列的元素大于 0,其第 1 列的值介于 101 (row1 ) 和 111 (row3) 之间。所以条件是,对于任何一行,如果第 3 列的值大于 0,并且第 1 列的值介于上列和下列之间。
需要的输出:
col1 col2 col3
row1 101 woody After_none
row2 101 woody 0
row3 111 kiln Between_woody_weez
row4 200 weez Between_Kiln_rowt
row5 315 rowt 0
如果有人可以帮助我,我会很高兴。谢谢
添加了更多数据来运行 Akru 的代码:
col1 col2 col3
255 mwu 21
77031 netw 0
77031 netw 0
77031 netw 0
82513 cuu 91
88206 cxum 0
88206 cxum 0
88206 cxum 0
188450 xaii 25
188450 xaii 0
188450 xaii 0
188450 xaii 0
188450 xaii 0
199800 aau 0
使用此数据样本运行代码,但输出不太正确:
col1 col2 col3 colN
255 mwu 21 After_none
77031 netw 0 <NA>
77031 netw 0 <NA>
77031 netw 0 <NA>
82513 cuu 91 Between_mwu_netw
88206 cxum 0 <NA>
88206 cxum 0 <NA>
88206 cxum 0 <NA>
188450 xaii 25 Between_netw_cxum
188450 xaii 0 <NA>
188450 xaii 0 <NA>
188450 xaii 0 <NA>
188450 xaii 0 <NA>
199800 aau 0 <NA>
但预期的输出是:
col1 col2 col3
255 mwu 21
77031 netw 0
77031 netw 0
77031 netw 0
82513 Between_mwu_cxum 91
88206 cxum 0
88206 cxum 0
88206 cxum 0
188450 Between_cxum_aau 25
188450 xaii 0
188450 xaii 0
188450 xaii 0
188450 xaii 0
199800 aau 0
或者用额外的列“colN”就可以了
预期输出:
col1 col2 col3
255 mwu 21
77031 netw 0
77031 netw 0
77031 netw 0
82513 Between_mwu_cxum 91
88206 cxum 0
88206 cxum 0
88206 cxum 0
188450 Between_cxum_aau 25
188450 xaii 0
88450 xaii 0
188450 xaii 0
188450 xaii 0
199800 aau 0
【问题讨论】:
-
您的预期输出令人困惑。为什么你有
Between_mwu_cxum" for the row82513? Wouldn't that beBetween_netw_cxum`?或者新规则是我们只能从 >0 的行中选择? -
很抱歉给您带来了困惑。你是对的阿克伦。它应该是 Between_netw_cxum。
-
我不明白评论
col2 did not include the replacement strings "Between..."。你能澄清一下吗? -
你希望它在那里有什么?对于这些行,您显示了没有任何
Between的预期输出。无论如何,我花了一些时间。 -
对不起,我只展示了没有替代品的例子。我现在将展示完整的示例。谢谢
标签: r