使用dplyr用-1替换空格

时间:2016-11-11 08:00:55

标签: r dplyr

我正在尝试在整个数据框中将""替换为-1

此代码执行时没有任何错误,但它没有做任何更改。你能帮忙吗?

df.Sample <- mutate(replace(df.Sample, c(1:13)=="", -1))

2 个答案:

答案 0 :(得分:3)

如果replace适用于所有列,请使用mutate_each

library(dplyr)
df.Sample %>%
         mutate_each(funs(replace(., .=='', -1)))

数据

set.seed(24)
df.Sample <-  as.data.frame(matrix(sample(c(1:5, ""), 4*5, 
             replace=TRUE), ncol=4), stringsAsFactors=FALSE)

答案 1 :(得分:1)

确保Private Sub cmdSave_Click() Dim CustomerNumber As String, FullName As String, ContactNumber As Long, CompanyName As String Worksheets("CustForm").Select CustomerNumber = Range("D4") FullName = Range("D5") ContactNumber = Range("D6") CompanyName = Range("D7") Worksheets("CustomerList").Select Worksheets("CustomerList").Range("A5").Select If Worksheets("CustomerList").Range("A5").Offset(1, 0) <> "" Then **Worksheets("CustomerList").Range("A5").End(x1Down).Select** (here is where my error points me too) End If ActiveCell.Offset(1, 0).Select ActiveCell.Value = CustomerNumber ActiveCell.Offset(0, 1).Select ActiveCell.Value = FullName ActiveCell.Offset(0, 1).Select ActiveCell.Value = CompanyName ActiveCell.Offset(0, 1).Select ActiveCell.Value = ContactNumber Worksheets("CustForm").Select Worksheets("CustForm").Visible = True Worksheets("OrderInvoice").Activate Range("D4:J7").Select Selection.ClearContents End Sub 是空的,因素还是其他。 所以我推荐只是为了安全起见将数据帧转换为不将字符串视为因子的数据帧:

""

然后您可以将等于df.Sample <- data.frame(matrix(sample(c(1:5, ""), 10*13, replace=TRUE), ncol=13),stringsAsFactors = F) 的值替换为-1。 因此,如果您希望在第1列到第13列中执行此操作:

""

如果需要,您可以稍后将类型更改为for(i in names(df.Sample)){ df.Sample[eval(parse(text=paste("df.Sample$",i))) == "",i] <- "-1" }