2017-10-24 5 views
0

私はテキスト付きのデータフレームを持っています。私は選択された変数のすべての観測ですべての "、"に " - "を変更し、日付の単語を含む名前に基づいて変数を選択するのが好きです。選択した変数の文字以外の文字を変更する

私はさまざまなバリエーションのgrep()式をMyFuncに組み込もうとしましたが、動作させることができませんでした。

ありがとうございます!

始点:

df <- data.frame(dateofbirth=c("25,06,1939","15,04,1941","21,06,1978","06,07,1946","14,07,1935"),recdate=c("26,06,1945","03,04,1964","21,06,1949","15,07,1923","07,12,1945"),b=c("8,ted,st","99,tes,rd","6,ldk,dr","2,sdd,jun","asd,2,st"),disdatenow=c("25,06,1975","25,05,1996","21,06,1932","26,07,1934","07,07,1965"), stringsAsFactors = FALSE) 

望ましい結果:

df <- data.frame(dateofbirth=c("25-06-1939","15-04-1941","21-06-1978","06-07-1946","14-07-1935"),recdate=c("26-06-1945","03-04-1964","21-06-1949","15-07-1923","07-12-1945"),b=c("8,ted,st","99,tes,rd","6,ldk,dr","2,sdd,jun","asd,2"),disdatenow=c("25-06-1975","25-05-1996","21-06-1932","26-07-1934","07-07-1965"), stringsAsFactors = FALSE) 

現在のコード:

MyFunc <- function(x) {gsub(",","-",df$x)} 

答えて

1

を使用できmutate_atdplyrから:

df %>% 
    mutate_at(vars(contains("date")), function(x){gsub(",", "-", x)}) 

、それはあなたにこれを与える:

あなたの関数 MyFuncを使用して
dateofbirth recdate   b disdatenow 
1 25-06-1939 26-06-1945 8,ted,st 25-06-1975 
2 15-04-1941 03-04-1964 99,tes,rd 25-05-1996 
3 21-06-1978 21-06-1949 6,ldk,dr 21-06-1932 
4 06-07-1946 15-07-1923 2,sdd,jun 26-07-1934 
5 14-07-1935 07-12-1945 asd,2,st 07-07-1965 
0

、これも

MyFunc <- function(x) {gsub(",", "-", x)} 
library(data.table) 
setDT(df) 
cols <- c("dateofbirth", "recdate", "disdatenow") 
df[, cols] <- df[, lapply(.SD, MyFunc), .SDcols = cols] 
を動作するはずです
関連する問題