2

data.frame のさまざまな要素を別の要素 (レベルの一部ではない) に置き換えたいと思います。例えば:

au1 <- c('deb', 'art', 'deb', 'seb', 'deb', 'deb', 'mar', 'mar', 'joy', 'deb')
au2 <- c('art', 'deb', 'soy', 'deb', 'joy', 'ani', 'deb', 'deb', 'nem', 'mar')
au3 <- c('mar', 'lio', 'mil', 'mar', 'ani', 'lul', 'nem', 'art', 'deb', 'tat')

tata <- data.frame(au1, au2, au3)

「deb」と「joy」をすべて「XXX」に変更したいと思います。

それを行う方法が見つかりません。data.frame 全体にレベルを追加し、data.frame に %in% c('', '') を使用するのに苦労しています。

何か案が?

4

3 に答える 3

5

mapvalues()ライブラリの関数を使用できますplyr()。これを複数の列で実行したい場合は、 function も使用できますsapply()。このソリューションは、データ フレーム内のすべての列が因子である場合に機能します。

library(plyr)
xx<-as.data.frame(sapply(tata,
          mapvalues, from = c("deb", "joy"), to = c("XXX", "XXX")))
于 2013-08-12T09:20:44.497 に答える
0

NAerqdap パッケージの関数を使用したアプローチを次に示します。

library(qdap)

tata[apply(tata, 2,  '%in%', c('deb', 'joy'))] <- NA
NAer(tata, "XXX")

##    au1 au2 au3
## 1  XXX art mar
## 2  art XXX lio
## 3  XXX soy mil
## 4  seb XXX mar
## 5  XXX XXX ani
## 6  XXX ani lul
## 7  mar XXX nem
## 8  mar XXX art
## 9  XXX nem XXX
## 10 XXX mar tat
于 2013-08-12T13:37:41.563 に答える