Main Content

replacedata

(Not Recommended) Replace dataset variables

The dataset data type is not recommended. To work with heterogeneous data, use the MATLAB® table data type instead. See MATLAB table documentation for more information.

Syntax

B = replacedata(A,X)
B = replacedata(A,X,vars)
B = replacedata(A,fun)
B = replacedata(A,fun,vars)

Description

B = replacedata(A,X) creates a dataset array B with the same variables as the dataset array A, but with the data for those variables replaced by the data in the array X. replacedata creates each variable in B using one or more columns from X, in order. X must have as many columns as the total number of columns in all of the variables in A, and as many rows as A has observations.

B = replacedata(A,X,vars) creates a dataset array B with the same variables as the dataset array A, but with the data for the variables specified in vars replaced by the data in the array X. The remaining variables in B are copies of the corresponding variables in A. vars is a positive integer, a vector of positive integers, a character vector, a string array, a cell array of character vectors, or a logical vector. Each variable in B has as many columns as the corresponding variable in A. X must have as many columns as the total number of columns in all the variables specified in vars.

B = replacedata(A,fun) or B = replacedata(A,fun,vars) creates a dataset array B by applying the function fun to the values in A's variables. replacedata first horizontally concatenates A's variables into a single array, then applies the function fun. The specified variables in A must have types and sizes compatible with the concatenation. fun is a function handle that accepts a single input array and returns an array with the same number of rows and columns as the input.

Examples

data = dataset({rand(3,3),'Var1','Var2','Var3'})

% Use ZSCORE to normalize each variable in a dataset array
% separately, by explicitly extracting and transforming the
% data, and then replacing it.
X = double(data);
X = zscore(X);
data = replacedata(data,X)

% Equivalently, provide a handle to ZSCORE.
data = replacedata(data,@zscore)

% Use ZSCORE to normalize each observation in a dataset
% array separately by creating an anonymous function.
data = replacedata(data,@(x) zscore(x,[],2)) 

See Also