相关疑难解决方法(0)

自动将R因子扩展为每个因子级别的1/0指标变量的集合

我有一个R数据帧,其中包含我想要"扩展"的因子,因此对于每个因子级别,新数据帧中都有一个关联列,其中包含1/0指示符.例如,假设我有:

df.original <-data.frame(eggs = c("foo", "foo", "bar", "bar"), ham = c(1,2,3,4))
Run Code Online (Sandbox Code Playgroud)

我想要:

df.desired  <- data.frame(foo = c(1,1,0,0), bar=c(0,0,1,1), ham=c(1,2,3,4))
Run Code Online (Sandbox Code Playgroud)

因为对于某些分析的,你需要有一个完全的数字数据帧(例如,主成分分析),我认为这功能可能是内置的.写一个函数来做到这一点应该不会太难,但我可以预见到一些与列名相关的挑战,如果已存在某些内容,我宁愿使用它.

r

100
推荐指数
5
解决办法
5万
查看次数

如何替换表*中的NA值以用于所选列*?data.frame,data.table

有很多关于替换NA值的帖子.我知道可以用以下内容替换下表/框架中的NA:

x[is.na(x)]<-0
Run Code Online (Sandbox Code Playgroud)

但是,如果我想将其限制为仅某些列,该怎么办?让我给你看一个例子.

首先,让我们从数据集开始.

set.seed(1234)
x <- data.frame(a=sample(c(1,2,NA), 10, replace=T),
                b=sample(c(1,2,NA), 10, replace=T), 
                c=sample(c(1:5,NA), 10, replace=T))
Run Code Online (Sandbox Code Playgroud)

这使:

    a  b  c
1   1 NA  2
2   2  2  2
3   2  1  1
4   2 NA  1
5  NA  1  2
6   2 NA  5
7   1  1  4
8   1  1 NA
9   2  1  5
10  2  1  1
Run Code Online (Sandbox Code Playgroud)

好的,所以我只想将替换限制为列'a'和'b'.我的尝试是:

x[is.na(x), 1:2]<-0
Run Code Online (Sandbox Code Playgroud)

和:

x[is.na(x[1:2])]<-0
Run Code Online (Sandbox Code Playgroud)

哪个不起作用.

我的data.table尝试,在哪里y<-data.table(x),显然永远不会起作用:

y[is.na(y[,list(a,b)]), ]
Run Code Online (Sandbox Code Playgroud)

我想在is.na参数中传递列,但显然不起作用.

我想在data.frame和data.table中执行此操作.我的最终目标是在'a'和'b'中将1:2重新编码为0:1,同时保持'c'的方式,因为它不是逻辑变量.我有一堆列,所以我不想一个接一个地做.而且,我只想知道如何做到这一点.

你有什么建议吗?

replace r dataframe na data.table

71
推荐指数
4
解决办法
11万
查看次数

标签 统计

r ×2

data.table ×1

dataframe ×1

na ×1

replace ×1