[问题] which与if运用

楼主: huangsam (sam)   2016-12-01 16:03:29
[问题类型]:
程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
[软件熟悉度]:
请把以下不需要的部份删除
使用者(已经有用R 做过不少作品)
[问题叙述]:
请简略描述你所要做的事情,或是这个程式的目的
目前有个DATA 想要判断在某个列是否被取代过如果没有被取代过就换新的
举例
DATA
字段1
NA
NA
NA
NA
NA
NA
NA
NA
好比说我前面有先跑程式发现我想取代1,3,5列
那我就先判断是否为NA若是NA则改写成A
改写如下
A
NA
A
NA
A
NA
.
.
.
接下来我会再判断要被替换的列为1,4,改写成B
因为第一列被改写则为但是第四列没有则指会改写第四列
A
NA
A
B
A
NA
.
.
.
想问有没有更快速的方法因为有时候资料量大的时候会跑比较久
[程式范例]:
for(j in which(ind==1))
{
DT[j] <- ifelse(DT[j]==0, 要被取代的值,DT[i] )
}
[环境叙述]:
[关键字]:
which , for ,ifelse
选择性,也许未来有用
作者: Edster (Edster)   2016-12-01 16:16:00
把一开始要取代的位置1,3,5 跟第2次要取代的位置2,4 都留下来。第二次是1,4 。如果存成list 你就用lappy(position_list, setdiff)好像也不能,再想一下
作者: cywhale (cywhale)   2016-12-01 16:42:00
idx <- intersect(which(is.na(DT)), new_idx)DT[idx] <- newdata[new_idx %in% idx]

Links booklink

Contact Us: admin [ a t ] ucptt.com