我有这样的数据集:
>Mydata
SampleID mean sd
F1 NA NA
F2 215.7400 1.5881646
F3 NA NA
F4 NA NA
F5 NA NA
我使用以下代码来舍入数字变量'mean'和'sd':
mydata$mean<-format(round(mydata$mean,2),nsmall=2)
mydata$sd<-format(round(mydata$sd,2),nsmall=2)
它变成了这样:
>mydata
Sample.ID mean sd
F1 NA NA
F2 215.74 1.59
F3 NA NA
F4 NA NA
> summary(mydata)
mean sd
Length:48 Length:48
Class :character Class :character
Mode :character Mode :character
我想用空格替换NA,然后我尝试了几种方法,但NA还在那里......
> mydata[is.na(mydata)]<-""
>mydata
Sample.ID mean sd
F1 NA NA
F2 215.74 1.59
F3 NA NA
F4 NA NA
或
>mydata[mydata=="NA"]<-""
>mydata
Sample.ID mean sd
F1 NA NA
F2 215.74 1.59
F3 NA NA
F4 NA NA
我想这是因为这里包含“NA”的列是字符,所以我不能替换所有的NA?任何人都知道如何用空格替换字符NAs?
非常感谢!
答案 0 :(得分:2)
您可以使用def addimg(request, pk):
post = get_object_or_404(Post, pk=pk)
if request.method == "POST":
form = AddimgForm(request.POST, request.FILES, post=post)
#...
else:
form = AddimgForm(post=post)
return render(request, 'blog/edit.html', {'form': form})
class AddimgForm(forms.ModelForm):
class Meta:
model = Addimg
fields = ('post', 'addimg', 'width', 'height',)
def __init__(self, *args, **kwargs):
post = kwargs.pop('post')
super(AddimgForm, self ).__init__(*args, **kwargs)
self.fields['post'].queryset = Post.objects.filter(id=post.id)
。
ifelse
或者,如果您愿意,
blank.format <- function(x) {
ifelse(is.na(x), "", format(round(x, 2), nsmall = 2))
}
Mydata <- transform(Mydata, mean = blank.format(mean),
sd = blank.format(sd))
无论哪种方式,您的数据框现在都如下所示:
Mydata$mean <- ifelse(is.na(Mydata$mean), "", format(round(Mydata$mean, 2), nsmall = 2))
Mydata$sd <- ifelse(is.na(Mydata$sd), "", format(round(Mydata$sd, 2), nsmall = 2))
当值仍为数字时,此测试Mydata
# SampleID mean sd
# 1 F1
# 2 F2 215.74 1.59
# 3 F3
# 4 F4
# 5 F5
str(Mydata)
# 'data.frame': 5 obs. of 3 variables:
# $ SampleID: chr "F1" "F2" "F3" "F4" ...
# $ mean : chr "" "215.74" "" "" ...
# $ sd : chr "" "1.59" "" "" ...
。如果是NA
,则将新变量设为空,否则按需要格式化。
答案 1 :(得分:0)
看起来NA被转换为字符串&#34; NA&#34;使用format
时。因此,首先设置参数trim=TRUE
以避免第一个空格(来自帮助:if trim=FALSE
,逻辑,数值和复数值右对齐到公共宽度:如果为TRUE,则前导空格因为理由被压制了。
所以现在你仍然有&#34; NA&#34;字符串,所以用空格替换它们的条件应该是
mydata$mean[mydata$mean=="NA"]<-""
mydata$sd[mydata$sd=="NA"]<-""