我有一个R数据框,如下所示
client A B C D
asd awe 0 rty 0
wer 0 tyu wer 0
我想要的数据框如下
client A B C D recom
asd awe 0 rty 0 awe rty
wer 0 tyu wer 0 tyu wer
我希望所有非零元素都以名称ccolumn打印 我正在使用以下代码来生成上面的代码,但它似乎无法正常工作
df$recom= simplify2array(apply(df[2:5],1, function(x) paste(df[2:5]) [x!=0],collapse=" "))
答案 0 :(得分:1)
尝试:
df$recom <- apply(df[, 2:5],1, function(x) paste(x[x!=0], collapse=" "))
client A B C D recom
1 asd awe 0 rty 0 awe rty
2 wer 0 tyu wer 0 tyu wer
答案 1 :(得分:1)
或者更快的选择是逐行<button type="button" class="btn btn-primary" (click)="searchfilter()">
Search here
</button>
元素,然后删除0值
paste
正如我们在评论中提到的,df$recom <- trimws(gsub("^0 +| +0|0 +0", "", do.call(paste, df1[-1])))
df$recom
#[1] "awe rty" "tyu wer"
调用不需要simplify2array
,因为每行中的元素都是apply
d,以获得paste
作为输出。事实上,在OP的解决方案中,而不是使用匿名的&#39; x&#39;对于子集和后来的vector
,使用了完整的数据集,即paste
。所以,它应该是评论中的一个(与其他解决方案中发布的类似)